@descope/web-components-ui 1.134.0 → 1.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +360 -308
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +358 -321
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/{2739.js → 3685.js} +2 -2
- package/dist/umd/3685.js.map +1 -0
- package/dist/umd/8961.js +1 -1
- package/dist/umd/8961.js.map +1 -1
- package/dist/umd/9365.js +1 -1
- package/dist/umd/9365.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/boolean-fields-descope-checkbox-index-js.js +1 -1
- package/dist/umd/boolean-fields-descope-checkbox-index-js.js.map +1 -1
- package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js +1 -1
- package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js.map +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js.map +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js.map +1 -1
- package/dist/umd/descope-date-field-descope-calendar-index-js.js +1 -1
- package/dist/umd/descope-date-field-descope-calendar-index-js.js.map +1 -1
- package/dist/umd/descope-date-field-index-js.js +1 -1
- package/dist/umd/descope-date-field-index-js.js.map +1 -1
- package/dist/umd/descope-email-field-index-js.js +4 -4
- package/dist/umd/descope-email-field-index-js.js.map +1 -1
- package/dist/umd/descope-grid-descope-grid-selection-column-index-js.js +1 -1
- package/dist/umd/descope-grid-descope-grid-selection-column-index-js.js.map +1 -1
- package/dist/umd/descope-grid-index-js.js +1 -1
- package/dist/umd/descope-grid-index-js.js.map +1 -1
- package/dist/umd/descope-multi-select-combo-box-index-js.js +1 -1
- package/dist/umd/descope-multi-select-combo-box-index-js.js.map +1 -1
- package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -1
- package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js.map +1 -1
- package/dist/umd/descope-new-password-index-js.js +1 -1
- package/dist/umd/descope-new-password-index-js.js.map +1 -1
- package/dist/umd/descope-number-field-index-js.js +1 -1
- package/dist/umd/descope-number-field-index-js.js.map +1 -1
- package/dist/umd/descope-passcode-index-js.js +2 -2
- package/dist/umd/descope-passcode-index-js.js.map +1 -1
- package/dist/umd/descope-password-index-js.js +1 -1
- package/dist/umd/descope-password-index-js.js.map +1 -1
- package/dist/umd/descope-radio-group-index-js.js +1 -1
- package/dist/umd/descope-radio-group-index-js.js.map +1 -1
- package/dist/umd/descope-scopes-list-index-js.js +1 -1
- package/dist/umd/descope-scopes-list-index-js.js.map +1 -1
- package/dist/umd/descope-security-questions-setup-index-js.js +1 -1
- package/dist/umd/descope-security-questions-setup-index-js.js.map +1 -1
- package/dist/umd/descope-security-questions-verify-index-js.js +2 -2
- package/dist/umd/descope-security-questions-verify-index-js.js.map +1 -1
- package/dist/umd/descope-text-area-index-js.js +1 -1
- package/dist/umd/descope-text-area-index-js.js.map +1 -1
- package/dist/umd/descope-text-field-index-js.js +2 -2
- package/dist/umd/descope-text-field-index-js.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
- package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
- package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
- package/package.json +24 -24
- package/src/components/descope-date-field/DateFieldClass.js +1 -1
- package/src/components/descope-date-field/date-utils.js +24 -0
- package/src/components/descope-date-field/descope-calendar/CalendarClass.js +1 -1
- package/src/components/descope-date-field/descope-calendar/helpers.js +2 -1
- package/src/components/descope-date-field/formats.js +1 -1
- package/src/components/descope-date-field/helpers.js +1 -25
- package/src/constants.js +1 -1
- package/src/helpers/themeHelpers/index.js +33 -4
- package/src/mixins/createStyleMixin/helpers.js +1 -1
- package/src/mixins/createStyleMixin/index.js +7 -1
- package/src/theme/components/container.js +2 -1
- package/dist/umd/2739.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"descope-date-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateCounterClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/index.js"],"sourcesContent":["const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\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\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n #data = Object.freeze([]);\n\n constructor({ id, min, max, placeholder }, onChange) {\n this.id = id;\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n this.onChange = onChange;\n }\n\n get data() {\n return this.#data;\n }\n\n set data(val) {\n this.#data = Object.freeze(val);\n this.onChange?.();\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n // use local var to avoid triggering onChange\n let data = this.data;\n\n data = [...data, num];\n\n // we need to re-evaluate the number value\n const numVal = Number(data.join(''));\n\n if (numVal > this.max) {\n data = [num];\n } else if (this.length < data.length) {\n data = data.slice(1, data.length);\n }\n\n this.data = data;\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data = [];\n } else {\n this.data = this.data.slice(0, this.data.length - 1);\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(\n this.#initialNumValue < this.max\n ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n : this.min\n );\n }\n\n dec(gap) {\n this.replaceValue(\n this.#initialNumValue > this.min\n ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n : this.max\n );\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n\n setMin(val) {\n this.min = Number(val);\n }\n\n setMax(val) {\n this.max = Number(val);\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n newDate,\n isValidEpoch,\n formatEpoch,\n isNumber,\n getCurrentTime,\n overrideConstructedStylesheet,\n dateToEpoch,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport {\n counterConfig,\n DEFAULT_FORMAT,\n DIVIDER,\n MOBILE_DEVICE_INTERACTION_TIMEOUT_MS,\n NATIVE_FORMAT,\n valRange,\n} from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { parseDateString } from './helpers';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = [\n 'format',\n 'opened',\n 'initial-value',\n 'readonly',\n 'disable-calendar',\n 'utc-time',\n];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n epoch = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n updateCountersDisplay() {\n this.inputElement.value = this.countersValue;\n }\n\n updateValue() {\n if (this.isCountersOutOfRange) {\n this.updateEpoch('');\n } else {\n const date = formats[this.format].getDate(this.inputElement.value);\n this.updateEpoch(dateToEpoch(date, this.isUtcTime));\n }\n }\n\n onDateCounterChange = () => {\n this.updateCountersDisplay();\n this.updateValue();\n // update validity\n this.#dispatchInput();\n };\n\n updateEpoch(epochOrDate) {\n if (Number.isNaN(epochOrDate) || !epochOrDate.toString()?.length) {\n this.epoch = '';\n } else {\n this.epoch = dateToEpoch(newDate(epochOrDate, this.isUtcTime), this.isUtcTime);\n }\n }\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this)),\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field inputmode=\"numeric\">\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n }\n\n get validationTarget() {\n return this.inputElement;\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a epoch\n get displayValueEpoch() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidEpoch(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n if (this.isInvalidDate()) {\n return '';\n }\n return this.epoch;\n }\n\n set value(val) {\n let value = parseInt(val, 10);\n if (!Number.isNaN(value)) {\n this.updateEpoch(value);\n this.updateDateCounters(newDate(value));\n } else {\n this.updateEpoch('');\n this.resetDateCounters();\n this.clearInputEle();\n }\n }\n\n get isCountersEmpty() {\n return this.dateCounters.every((dc) => dc.isEmpty);\n }\n\n get isCountersOutOfRange() {\n return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n }\n\n get disableCalendar() {\n return this.getAttribute('disable-calendar') === 'true';\n }\n\n get isUtcTime() {\n return this.getAttribute('utc-time') === 'true';\n }\n\n get isSelectAll() {\n const inputEle = this.inputElement.baseElement.inputElement;\n return inputEle.value.length === inputEle.selectionStart + inputEle.selectionEnd;\n }\n\n reportValidity() {\n this.inputElement.reportValidity();\n }\n\n #dispatchInput() {\n this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatEpoch(newDate(this.countersValue).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.onDateCounterChange();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.inputElement.getValidity = this.getValidity.bind(this);\n this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeyboard.bind(this));\n this.inputElement.addEventListener('beforeinput', this.handleInput.bind(this));\n this.inputElement.addEventListener('pointerdown', this.onPointerDown.bind(this));\n this.inputElement.addEventListener('paste', this.onPaste.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'bordered',\n 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch',\n 'data-errormessage-range-underflow',\n 'data-errormessage-range-overflow',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n }\n\n handleInput(e) {\n e.preventDefault();\n\n this.handleSelectAll();\n\n if (e.data && isNumber(e.data)) {\n this.parseDigits(e.data);\n this.updateCountersDisplay();\n } else if (e.inputType) {\n this.handleNavKeys(e);\n }\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n handleSelectAll() {\n if (this.isSelectAll) {\n this.selectFirstCounter();\n }\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n if (this.disableCalendar) return;\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = dateToEpoch(calendarDate, this.isUtcTime);\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.#dispatchInput();\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidEpoch(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.displayValueEpoch || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatEpoch(this.displayValueEpoch || this.epoch, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatEpoch(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n // In mobile devices, there are cases were `pointerdown` is triggered\n // instead of `click`.\n onPointerDown(e) {\n setTimeout(() => this.handleMouseCaretPositionChange(e), MOBILE_DEVICE_INTERACTION_TIMEOUT_MS);\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n // We need to wait for focus to end before we set selection\n setTimeout(() => this.resetDisplay());\n }\n\n resetDisplay() {\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n }\n\n // On focus select the first counter\n this.selectFirstCounter();\n // set selection on first counter\n this.inputElement.setSelectionRange(0, this.sortedCounters[0].length);\n }\n\n onBlur() {\n if (this.opened) {\n return;\n }\n\n if (this.inputElement.value === this.format) {\n this.clearInputEle();\n }\n }\n\n clearInputEle() {\n this.inputElement.value = '';\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n parseDigits(value) {\n this.activeCounter.add(value);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n // We wait for the digit to be parsed, and only then set the selection.\n // Failing to do so results in unexpected \"jump\" of the screen in mobile devices.\n this.setInputSelectionRange();\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(\n // if triggered by touch event, target might not include `selectionStart`\n // in that case we fall back to the inputElement's `selectionStart` value.\n // Therefore, it is recommended to run this function with setTimeout,\n // at least for mobile events.\n e.target?.selectionStart || this.inputElement.selectionStart\n );\n }\n\n selectFirstCounter() {\n this.selectedCounterIdx = 0;\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n // We wait for before setting the selection, otherwise there's an\n // unexpected \"jump\" of the screen in mobile devices.\n setTimeout(() => {\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n });\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(this.isUtcTime ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(this.isUtcTime ? date.getUTCFullYear() : date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(this.isUtcTime ? date.getUTCDate() : date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleKeyboard(e) {\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === 'x') {\n this.onCut(e);\n }\n\n return;\n }\n\n this.handleSelectAll();\n\n if (e.key === 'ArrowUp') {\n this.activeCounter.inc();\n } else if (e.key === 'ArrowDown') {\n this.activeCounter.dec();\n } else if (e.key === 'ArrowRight') {\n this.selectNextCounter();\n } else if (e.key === 'ArrowLeft') {\n this.selectPrevCounter();\n }\n\n this.setInputSelectionRange();\n }\n\n handleNavKeys(e) {\n if (this.isReadOnly) {\n return;\n }\n\n if (this.opened) {\n this.closePopover();\n }\n\n if (!this.activeCounter) return;\n\n if (e.inputType === 'deleteContentBackward') {\n this.handleBackspace();\n }\n\n this.setInputSelectionRange();\n }\n\n handleBackspace() {\n if (this.isSelectAll) {\n this.resetToInitialState();\n return;\n }\n\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.set('');\n }\n\n // To support keyboards like SwiftKey, we need to re-render the counters display and selection,\n // otherwise we get an unexpected behavior, where the format is deleted.\n setTimeout(() => {\n this.updateCountersDisplay();\n this.setInputSelectionRange();\n });\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n\n e.preventDefault();\n\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n if (Number.isNaN(parseInt(val, 10))) {\n return;\n }\n this.value = Number(val);\n });\n }\n\n togglePopoverAccess(visibility) {\n if (visibility) {\n this.popoverToggleButton.classList.remove('hidden');\n } else {\n this.popoverToggleButton.classList.add('hidden');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'disable-calendar') {\n this.togglePopoverAccess(newValue !== 'true');\n }\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n // we want to validate the date supplied actually exists. For example: Feb 31 is not an actual date,\n // but in JS when create a `new Date('1999-02-31') we get March 2nd 1999.\n // To prevent this error from being submitted, we evaluate the\n // date parts against their generated Date value.\n isInvalidDate() {\n const yearCounter = this.getCounterById('year');\n const isYearOutOfRange =\n yearCounter.numberValue > valRange['year'].max ||\n yearCounter.numberValue < valRange['year'].min;\n\n const isDateDisplayMismatch = Object.entries(this.getDateVals()).some(([key, val]) => {\n const counter = this.getCounterById(key);\n return !val || counter.numberValue !== val;\n });\n\n return isYearOutOfRange || isDateDisplayMismatch;\n }\n\n getValidity() {\n if (this.isRequired && this.isCountersEmpty) {\n return { valueMissing: true };\n }\n\n if (this.isCountersOutOfRange || this.isInvalidDate()) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n\n getDateVals() {\n const ret = {\n day: '',\n month: '',\n year: '',\n };\n\n if (Number.isNaN(this.epoch)) {\n return ret;\n }\n\n try {\n const date = this.isUtcTime ? new Date(this.epoch) : newDate(this.epoch);\n\n if (this.isUtcTime) {\n ret.month = date.getUTCMonth() + 1;\n ret.day = date.getUTCDate();\n ret.year = date.getUTCFullYear();\n } else {\n ret.month = date.getMonth() + 1;\n ret.day = date.getDate();\n ret.year = date.getFullYear();\n }\n } catch (e) {}\n\n return ret;\n }\n\n resetToInitialState() {\n this.resetDateCounters();\n this.selectFirstCounter();\n this.resetDisplay();\n }\n\n onCut(e) {\n e.preventDefault();\n\n if (this.isSelectAll) {\n this.#copyToClipboard(this.countersValue);\n this.resetToInitialState();\n } else {\n this.#copyToClipboard(this.activeCounter.stringValue);\n this.activeCounter.set('');\n }\n\n this.setInputSelectionRange();\n }\n\n #copyToClipboard(value) {\n try {\n navigator.clipboard.writeText(value);\n } catch (err) {\n console.error('Failed to copy date value:', err);\n }\n }\n\n onPaste(e) {\n e.preventDefault();\n\n const clipboardData = e.clipboardData || window.clipboardData;\n const pastedData = clipboardData.getData('Text');\n\n // try paste entire date if valid\n const validDate = parseDateString(pastedData, this.format);\n\n if (validDate) {\n this.value = dateToEpoch(validDate, this.isUtcTime);\n this.onDateCounterChange();\n\n // select all\n setTimeout(() => this.inputElement.setSelectionRange(0, this.inputElement.value.length));\n } else {\n const value = Number(pastedData);\n\n // try paste in counter if possible\n if (value && this.activeCounter.min <= value && this.activeCounter.max >= value) {\n // use String to get rid of any zero padding\n this.activeCounter.set(String(value));\n\n setTimeout(() => this.setInputSelectionRange());\n }\n }\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n errorMessageIcon: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconSize,\n },\n errorMessageIconPadding: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPadding,\n },\n errorMessageIconRepeat: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n },\n errorMessageIconPosition: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPosition,\n },\n errorMessageFontSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\n"],"names":["host","label","placeholder","requiredIndicator","inputField","input","inputMask","helperText","errorMessage","disabledPlaceholder","inputDisabled","inputIcon","externalInput","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","selector","fontSize","fontFamily","labelFontSize","property","labelFontWeight","labelTextColor","hostWidth","hostMinWidth","hostDirection","inputDirection","inputBackgroundColor","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","helperTextColor","inputValueTextColor","inputCaretTextColor","labelRequiredIndicator","inputBorderColor","inputBorderWidth","inputBorderStyle","inputBorderRadius","inputHeight","inputHorizontalPadding","inputOutlineColor","inputOutlineStyle","inputOutlineWidth","inputOutlineOffset","textAlign","inputTextAlign","inputPlaceholderColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","inputIconOffset","inputIconSize","inputIconColor","customElements","define","componentName","observedAttrs","TextFieldClass","mappings","proxyProps","useProxyTargets","superclass","observedAttributes","concat","icon","init","super","renderCopyToClipboard","shouldRender","this","remove","iconInitConfig","title","style","iconCopiedConfig","Object","assign","document","createElement","slot","baseElement","appendChild","addEventListener","navigator","clipboard","writeText","value","setTimeout","onLabelClick","focus","attributeChangedCallback","attrName","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","slots","wrappedEleName","cssVarList","excludeAttrsSync","DateCounter","freeze","constructor","id","min","max","onChange","data","val","length","numberValue","Number","stringValue","join","padStart","isFull","isEmpty","toString","set","split","add","num","slice","del","filter","d","Boolean","clear","inc","gap","replaceValue","Math","dec","isInRange","setMin","setMax","BaseInputClass","createBaseInputClass","baseSelector","dateFieldAttrs","calendarAttrs","textVars","inputEleRTL","toggleButton","overlay","backdrop","DateFieldClass","componentNameOverride","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","name","marginTop","backgroundColor","backdropBackgroundColor","backdropPointerEvents","padding","boxShadow","outlineWidth","outlineColor","outlineStyle","epoch","format","selectedCounterIdx","updateCountersDisplay","inputElement","countersValue","updateValue","isCountersOutOfRange","updateEpoch","date","formats","getDate","isUtcTime","onDateCounterChange","epochOrDate","isNaN","dateCounters","MONTH","bind","DAY","YEAR","attachShadow","mode","innerHTML","shadowRoot","querySelector","popoverToggleButton","validationTarget","opened","getAttribute","displayValueEpoch","getTime","sortedCounters","map","find","dc","activeCounter","calendar","isRTL","computedStyleDirection","getComputedStyle","getPropertyValue","isInvalidDate","parseInt","resetDateCounters","clearInputEle","updateDateCounters","isCountersEmpty","every","some","disableCalendar","isSelectAll","inputEle","selectionStart","selectionEnd","reportValidity","dispatchEvent","Event","bubbles","updateInputDisplay","updateFormatPattern","initPopover","initInputElement","getValidity","checkValidity","onPopoverToggle","onFocus","onBlur","handleMouseCaretPositionChange","handleKeyboard","handleInput","onPointerDown","onPaste","includeAttrs","e","preventDefault","handleSelectAll","parseDigits","inputType","handleNavKeys","trigger","withBackdrop","renderer","stopPropagation","selectFirstCounter","root","firstChild","positionTarget","closePopover","setProperty","updateCalendarView","popover","windowRect","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","width","right","newOffset","abs","ele","onCalendarSubmit","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","openPopover","setAttribute","removeAttribute","getCounterById","isReadOnly","calendarDate","getFullYear","getMonth","validInputVal","validate","clearValue","resetDisplay","setSelectionRange","onFormatUpdate","keys","includes","pattern","selectNextCounter","setInputSelectionRange","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","target","selectPrevCounter","caretStart","reduce","acc","counter","forEach","getUTCMonth","getUTCFullYear","getUTCDate","metaKey","ctrlKey","key","toLowerCase","onCut","handleBackspace","resetToInitialState","onInitialValueChange","togglePopoverAccess","visibility","classList","oldValue","newValue","yearCounter","isYearOutOfRange","isDateDisplayMismatch","entries","getDateVals","isRequired","valueMissing","patternMismatch","ret","day","month","year","Date","err","console","error","pastedData","clipboardData","window","getData","validDate","String"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"descope-date-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateCounterClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/index.js"],"sourcesContent":["const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\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\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n #data = Object.freeze([]);\n\n constructor({ id, min, max, placeholder }, onChange) {\n this.id = id;\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n this.onChange = onChange;\n }\n\n get data() {\n return this.#data;\n }\n\n set data(val) {\n this.#data = Object.freeze(val);\n this.onChange?.();\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n // use local var to avoid triggering onChange\n let data = this.data;\n\n data = [...data, num];\n\n // we need to re-evaluate the number value\n const numVal = Number(data.join(''));\n\n if (numVal > this.max) {\n data = [num];\n } else if (this.length < data.length) {\n data = data.slice(1, data.length);\n }\n\n this.data = data;\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data = [];\n } else {\n this.data = this.data.slice(0, this.data.length - 1);\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(\n this.#initialNumValue < this.max\n ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n : this.min\n );\n }\n\n dec(gap) {\n this.replaceValue(\n this.#initialNumValue > this.min\n ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n : this.max\n );\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n\n setMin(val) {\n this.min = Number(val);\n }\n\n setMax(val) {\n this.max = Number(val);\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n isValidEpoch,\n formatEpoch,\n isNumber,\n getCurrentTime,\n overrideConstructedStylesheet,\n dateToEpoch,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport {\n counterConfig,\n DEFAULT_FORMAT,\n DIVIDER,\n MOBILE_DEVICE_INTERACTION_TIMEOUT_MS,\n NATIVE_FORMAT,\n valRange,\n} from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { parseDateString } from './helpers';\nimport { newDate } from './date-utils';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = [\n 'format',\n 'opened',\n 'initial-value',\n 'readonly',\n 'disable-calendar',\n 'utc-time',\n];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n epoch = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n updateCountersDisplay() {\n this.inputElement.value = this.countersValue;\n }\n\n updateValue() {\n if (this.isCountersOutOfRange) {\n this.updateEpoch('');\n } else {\n const date = formats[this.format].getDate(this.inputElement.value);\n this.updateEpoch(dateToEpoch(date, this.isUtcTime));\n }\n }\n\n onDateCounterChange = () => {\n this.updateCountersDisplay();\n this.updateValue();\n // update validity\n this.#dispatchInput();\n };\n\n updateEpoch(epochOrDate) {\n if (Number.isNaN(epochOrDate) || !epochOrDate.toString()?.length) {\n this.epoch = '';\n } else {\n this.epoch = dateToEpoch(newDate(epochOrDate, this.isUtcTime), this.isUtcTime);\n }\n }\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this)),\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field inputmode=\"numeric\">\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n }\n\n get validationTarget() {\n return this.inputElement;\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a epoch\n get displayValueEpoch() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidEpoch(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n if (this.isInvalidDate()) {\n return '';\n }\n return this.epoch;\n }\n\n set value(val) {\n let value = parseInt(val, 10);\n if (!Number.isNaN(value)) {\n this.updateEpoch(value);\n this.updateDateCounters(newDate(value));\n } else {\n this.updateEpoch('');\n this.resetDateCounters();\n this.clearInputEle();\n }\n }\n\n get isCountersEmpty() {\n return this.dateCounters.every((dc) => dc.isEmpty);\n }\n\n get isCountersOutOfRange() {\n return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n }\n\n get disableCalendar() {\n return this.getAttribute('disable-calendar') === 'true';\n }\n\n get isUtcTime() {\n return this.getAttribute('utc-time') === 'true';\n }\n\n get isSelectAll() {\n const inputEle = this.inputElement.baseElement.inputElement;\n return inputEle.value.length === inputEle.selectionStart + inputEle.selectionEnd;\n }\n\n reportValidity() {\n this.inputElement.reportValidity();\n }\n\n #dispatchInput() {\n this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatEpoch(newDate(this.countersValue).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.onDateCounterChange();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.inputElement.getValidity = this.getValidity.bind(this);\n this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeyboard.bind(this));\n this.inputElement.addEventListener('beforeinput', this.handleInput.bind(this));\n this.inputElement.addEventListener('pointerdown', this.onPointerDown.bind(this));\n this.inputElement.addEventListener('paste', this.onPaste.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'bordered',\n 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch',\n 'data-errormessage-range-underflow',\n 'data-errormessage-range-overflow',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n }\n\n handleInput(e) {\n e.preventDefault();\n\n this.handleSelectAll();\n\n if (e.data && isNumber(e.data)) {\n this.parseDigits(e.data);\n this.updateCountersDisplay();\n } else if (e.inputType) {\n this.handleNavKeys(e);\n }\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n handleSelectAll() {\n if (this.isSelectAll) {\n this.selectFirstCounter();\n }\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n if (this.disableCalendar) return;\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = dateToEpoch(calendarDate, this.isUtcTime);\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.#dispatchInput();\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidEpoch(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.displayValueEpoch || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatEpoch(this.displayValueEpoch || this.epoch, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatEpoch(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n // In mobile devices, there are cases were `pointerdown` is triggered\n // instead of `click`.\n onPointerDown(e) {\n setTimeout(() => this.handleMouseCaretPositionChange(e), MOBILE_DEVICE_INTERACTION_TIMEOUT_MS);\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n // We need to wait for focus to end before we set selection\n setTimeout(() => this.resetDisplay());\n }\n\n resetDisplay() {\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n }\n\n // On focus select the first counter\n this.selectFirstCounter();\n // set selection on first counter\n this.inputElement.setSelectionRange(0, this.sortedCounters[0].length);\n }\n\n onBlur() {\n if (this.opened) {\n return;\n }\n\n if (this.inputElement.value === this.format) {\n this.clearInputEle();\n }\n }\n\n clearInputEle() {\n this.inputElement.value = '';\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n parseDigits(value) {\n this.activeCounter.add(value);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n // We wait for the digit to be parsed, and only then set the selection.\n // Failing to do so results in unexpected \"jump\" of the screen in mobile devices.\n this.setInputSelectionRange();\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(\n // if triggered by touch event, target might not include `selectionStart`\n // in that case we fall back to the inputElement's `selectionStart` value.\n // Therefore, it is recommended to run this function with setTimeout,\n // at least for mobile events.\n e.target?.selectionStart || this.inputElement.selectionStart\n );\n }\n\n selectFirstCounter() {\n this.selectedCounterIdx = 0;\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n // We wait for before setting the selection, otherwise there's an\n // unexpected \"jump\" of the screen in mobile devices.\n setTimeout(() => {\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n });\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(this.isUtcTime ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(this.isUtcTime ? date.getUTCFullYear() : date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(this.isUtcTime ? date.getUTCDate() : date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleKeyboard(e) {\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === 'x') {\n this.onCut(e);\n }\n\n return;\n }\n\n this.handleSelectAll();\n\n if (e.key === 'ArrowUp') {\n this.activeCounter.inc();\n } else if (e.key === 'ArrowDown') {\n this.activeCounter.dec();\n } else if (e.key === 'ArrowRight') {\n this.selectNextCounter();\n } else if (e.key === 'ArrowLeft') {\n this.selectPrevCounter();\n }\n\n this.setInputSelectionRange();\n }\n\n handleNavKeys(e) {\n if (this.isReadOnly) {\n return;\n }\n\n if (this.opened) {\n this.closePopover();\n }\n\n if (!this.activeCounter) return;\n\n if (e.inputType === 'deleteContentBackward') {\n this.handleBackspace();\n }\n\n this.setInputSelectionRange();\n }\n\n handleBackspace() {\n if (this.isSelectAll) {\n this.resetToInitialState();\n return;\n }\n\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.set('');\n }\n\n // To support keyboards like SwiftKey, we need to re-render the counters display and selection,\n // otherwise we get an unexpected behavior, where the format is deleted.\n setTimeout(() => {\n this.updateCountersDisplay();\n this.setInputSelectionRange();\n });\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n\n e.preventDefault();\n\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n if (Number.isNaN(parseInt(val, 10))) {\n return;\n }\n this.value = Number(val);\n });\n }\n\n togglePopoverAccess(visibility) {\n if (visibility) {\n this.popoverToggleButton.classList.remove('hidden');\n } else {\n this.popoverToggleButton.classList.add('hidden');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'disable-calendar') {\n this.togglePopoverAccess(newValue !== 'true');\n }\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n // we want to validate the date supplied actually exists. For example: Feb 31 is not an actual date,\n // but in JS when create a `new Date('1999-02-31') we get March 2nd 1999.\n // To prevent this error from being submitted, we evaluate the\n // date parts against their generated Date value.\n isInvalidDate() {\n const yearCounter = this.getCounterById('year');\n const isYearOutOfRange =\n yearCounter.numberValue > valRange['year'].max ||\n yearCounter.numberValue < valRange['year'].min;\n\n const isDateDisplayMismatch = Object.entries(this.getDateVals()).some(([key, val]) => {\n const counter = this.getCounterById(key);\n return !val || counter.numberValue !== val;\n });\n\n return isYearOutOfRange || isDateDisplayMismatch;\n }\n\n getValidity() {\n if (this.isRequired && this.isCountersEmpty) {\n return { valueMissing: true };\n }\n\n if (this.isCountersOutOfRange || this.isInvalidDate()) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n\n getDateVals() {\n const ret = {\n day: '',\n month: '',\n year: '',\n };\n\n if (Number.isNaN(this.epoch)) {\n return ret;\n }\n\n try {\n const date = this.isUtcTime ? new Date(this.epoch) : newDate(this.epoch);\n\n if (this.isUtcTime) {\n ret.month = date.getUTCMonth() + 1;\n ret.day = date.getUTCDate();\n ret.year = date.getUTCFullYear();\n } else {\n ret.month = date.getMonth() + 1;\n ret.day = date.getDate();\n ret.year = date.getFullYear();\n }\n } catch (e) {}\n\n return ret;\n }\n\n resetToInitialState() {\n this.resetDateCounters();\n this.selectFirstCounter();\n this.resetDisplay();\n }\n\n onCut(e) {\n e.preventDefault();\n\n if (this.isSelectAll) {\n this.#copyToClipboard(this.countersValue);\n this.resetToInitialState();\n } else {\n this.#copyToClipboard(this.activeCounter.stringValue);\n this.activeCounter.set('');\n }\n\n this.setInputSelectionRange();\n }\n\n #copyToClipboard(value) {\n try {\n navigator.clipboard.writeText(value);\n } catch (err) {\n console.error('Failed to copy date value:', err);\n }\n }\n\n onPaste(e) {\n e.preventDefault();\n\n const clipboardData = e.clipboardData || window.clipboardData;\n const pastedData = clipboardData.getData('Text');\n\n // try paste entire date if valid\n const validDate = parseDateString(pastedData, this.format);\n\n if (validDate) {\n this.value = dateToEpoch(validDate, this.isUtcTime);\n this.onDateCounterChange();\n\n // select all\n setTimeout(() => this.inputElement.setSelectionRange(0, this.inputElement.value.length));\n } else {\n const value = Number(pastedData);\n\n // try paste in counter if possible\n if (value && this.activeCounter.min <= value && this.activeCounter.max >= value) {\n // use String to get rid of any zero padding\n this.activeCounter.set(String(value));\n\n setTimeout(() => this.setInputSelectionRange());\n }\n }\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n errorMessageIcon: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconSize,\n },\n errorMessageIconPadding: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPadding,\n },\n errorMessageIconRepeat: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n },\n errorMessageIconPosition: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPosition,\n },\n errorMessageFontSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\n"],"names":["host","label","placeholder","requiredIndicator","inputField","input","inputMask","helperText","errorMessage","disabledPlaceholder","inputDisabled","inputIcon","externalInput","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","selector","fontSize","fontFamily","labelFontSize","property","labelFontWeight","labelTextColor","hostWidth","hostMinWidth","hostDirection","inputDirection","inputBackgroundColor","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","helperTextColor","inputValueTextColor","inputCaretTextColor","labelRequiredIndicator","inputBorderColor","inputBorderWidth","inputBorderStyle","inputBorderRadius","inputHeight","inputHorizontalPadding","inputOutlineColor","inputOutlineStyle","inputOutlineWidth","inputOutlineOffset","textAlign","inputTextAlign","inputPlaceholderColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","inputIconOffset","inputIconSize","inputIconColor","customElements","define","componentName","observedAttrs","TextFieldClass","mappings","proxyProps","useProxyTargets","superclass","observedAttributes","concat","icon","init","super","renderCopyToClipboard","shouldRender","this","remove","iconInitConfig","title","style","iconCopiedConfig","Object","assign","document","createElement","slot","baseElement","appendChild","addEventListener","navigator","clipboard","writeText","value","setTimeout","onLabelClick","focus","attributeChangedCallback","attrName","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","slots","wrappedEleName","cssVarList","excludeAttrsSync","DateCounter","freeze","constructor","id","min","max","onChange","data","val","length","numberValue","Number","stringValue","join","padStart","isFull","isEmpty","toString","set","split","add","num","slice","del","filter","d","Boolean","clear","inc","gap","replaceValue","Math","dec","isInRange","setMin","setMax","BaseInputClass","createBaseInputClass","baseSelector","dateFieldAttrs","calendarAttrs","textVars","inputEleRTL","toggleButton","overlay","backdrop","DateFieldClass","componentNameOverride","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","name","marginTop","backgroundColor","backdropBackgroundColor","backdropPointerEvents","padding","boxShadow","outlineWidth","outlineColor","outlineStyle","epoch","format","selectedCounterIdx","updateCountersDisplay","inputElement","countersValue","updateValue","isCountersOutOfRange","updateEpoch","date","formats","getDate","isUtcTime","onDateCounterChange","epochOrDate","isNaN","dateCounters","MONTH","bind","DAY","YEAR","attachShadow","mode","innerHTML","shadowRoot","querySelector","popoverToggleButton","validationTarget","opened","getAttribute","displayValueEpoch","getTime","sortedCounters","map","find","dc","activeCounter","calendar","isRTL","computedStyleDirection","getComputedStyle","getPropertyValue","isInvalidDate","parseInt","resetDateCounters","clearInputEle","updateDateCounters","isCountersEmpty","every","some","disableCalendar","isSelectAll","inputEle","selectionStart","selectionEnd","reportValidity","dispatchEvent","Event","bubbles","updateInputDisplay","updateFormatPattern","initPopover","initInputElement","getValidity","checkValidity","onPopoverToggle","onFocus","onBlur","handleMouseCaretPositionChange","handleKeyboard","handleInput","onPointerDown","onPaste","includeAttrs","e","preventDefault","handleSelectAll","parseDigits","inputType","handleNavKeys","trigger","withBackdrop","renderer","stopPropagation","selectFirstCounter","root","firstChild","positionTarget","closePopover","setProperty","updateCalendarView","popover","windowRect","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","width","right","newOffset","abs","ele","onCalendarSubmit","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","openPopover","setAttribute","removeAttribute","getCounterById","isReadOnly","calendarDate","getFullYear","getMonth","validInputVal","validate","clearValue","resetDisplay","setSelectionRange","onFormatUpdate","keys","includes","pattern","selectNextCounter","setInputSelectionRange","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","target","selectPrevCounter","caretStart","reduce","acc","counter","forEach","getUTCMonth","getUTCFullYear","getUTCDate","metaKey","ctrlKey","key","toLowerCase","onCut","handleBackspace","resetToInitialState","onInitialValueChange","togglePopoverAccess","visibility","classList","oldValue","newValue","yearCounter","isYearOutOfRange","isDateDisplayMismatch","entries","getDateVals","isRequired","valueMissing","patternMismatch","ret","day","month","year","Date","err","console","error","pastedData","clipboardData","window","getData","validDate","String"],"sourceRoot":""}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*! For license information please see descope-email-field-index-js.js.LICENSE.txt */
|
2
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[5695],{6424:(t,e,r)=>{r.d(e,{A:()=>x});const{host:
|
2
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[5695],{6424:(t,e,r)=>{r.d(e,{A:()=>x});const{host:i,label:o,placeholder:l,requiredIndicator:n,inputField:a,input:p,inputMask:s,helperText:d,errorMessage:u,disabledPlaceholder:c,inputDisabled:h,inputIcon:y,externalInput:m,externalInputDisabled:g,externalPlaceholder:f,externalDisabledPlaceholder:b}={host:{selector:()=>":host"},label:{selector:"::part(label)"},requiredIndicator:{selector:"[required]::part(required-indicator)::after"},placeholder:[{selector:"> input:placeholder-shown"},{selector:()=>":host::slotted(input:placeholder-shown)"}],disabledPlaceholder:{selector:"> input:disabled::placeholder"},inputField:{selector:"::part(input-field)"},input:{selector:"input"},inputMask:{selector:"::part(input-field)::before"},inputDisabled:{selector:"input:disabled"},helperText:{selector:"::part(helper-text)"},errorMessage:{selector:"::part(error-message)"},inputIcon:{selector:"vaadin-icon"},externalInput:{selector:()=>"::slotted(input)"},externalInputDisabled:{selector:()=>"::slotted(input:disabled)"},externalPlaceholder:{selector:()=>"::slotted(input:placeholder-shown)"},externalDisabledPlaceholder:{selector:()=>"::slotted(input:disabled::placeholder)"}},x={fontSize:[{},i],fontFamily:[o,a,d,u],labelFontSize:{...o,property:"font-size"},labelFontWeight:{...o,property:"font-weight"},labelTextColor:[{...o,property:"color"},{...n,property:"color"},{...o,property:"-webkit-text-fill-color"},{...n,property:"-webkit-text-fill-color"}],hostWidth:{...i,property:"width"},hostMinWidth:{...i,property:"min-width"},hostDirection:{...i,property:"direction"},inputDirection:{...p,property:"direction"},inputBackgroundColor:[{...a,property:"background-color"},{...s,property:"background-color"}],errorMessageTextColor:{...u,property:"color"},errorMessageIcon:{...u,property:"background-image"},errorMessageIconSize:{...u,property:"background-size"},errorMessageIconPadding:{...u,property:"padding-inline-start"},errorMessageIconRepeat:{...u,property:"background-repeat"},errorMessageIconPosition:{...u,property:"background-position"},errorMessageFontSize:{...u,property:"font-size"},helperTextColor:{...d,property:"-webkit-text-fill-color"},inputValueTextColor:[{...a,property:"color"},{...h,property:"-webkit-text-fill-color"},{...g,property:"-webkit-text-fill-color"}],inputCaretTextColor:[{...p,property:"caret-color"},{...m,property:"caret-color"}],labelRequiredIndicator:{...n,property:"content"},inputBorderColor:{...a,property:"border-color"},inputBorderWidth:{...a,property:"border-width"},inputBorderStyle:{...a,property:"border-style"},inputBorderRadius:{...a,property:"border-radius"},inputHeight:{...a,property:"height"},inputHorizontalPadding:[{...p,property:"padding-left"},{...p,property:"padding-right"},{...m,property:"padding-left"},{...m,property:"padding-right"}],inputOutlineColor:{...a,property:"outline-color"},inputOutlineStyle:{...a,property:"outline-style"},inputOutlineWidth:{...a,property:"outline-width"},inputOutlineOffset:{...a,property:"outline-offset"},textAlign:{},inputTextAlign:[{...p,property:"text-align"},{...m,property:"text-align"}],inputPlaceholderColor:[{selector:()=>":host input:placeholder-shown",property:"color"},{...f,property:"color"},{...l,property:"color"},{...c,property:"-webkit-text-fill-color"},{...b,property:"-webkit-text-fill-color"}],labelPosition:{...o,property:"position"},labelTopPosition:{...o,property:"top"},labelHorizontalPosition:[{...o,property:"left"},{...o,property:"right"}],inputTransformY:{...o,property:"transform"},inputTransition:{...o,property:"transition"},marginInlineStart:{...o,property:"margin-inline-start"},placeholderOpacity:[{selector:"> input:placeholder-shown",property:"opacity"},{...f,property:"opacity"}],inputVerticalAlignment:[{...a,property:"align-items"},{...m,property:"align-items"}],valueInputHeight:[{...p,property:"height"},{...m,property:"height"}],valueInputMarginBottom:[{...p,property:"margin-bottom"},{...m,property:"margin-bottom"}],inputIconOffset:[{...y,property:"margin-right"},{...y,property:"margin-left"}],inputIconSize:{...y,property:"font-size"},inputIconColor:{...y,property:"color"}}},18330:(t,e,r)=>{r.d(e,{f:()=>o});var i=r(44099);class o extends i.r{constructor(t,e){super(t,"input","input",{initializer:(t,r)=>{r.value&&(t.value=r.value),r.type&&t.setAttribute("type",r.type),t.id=this.defaultId,"function"==typeof e&&e(t)},useUniqueId:!0})}}},27136:(t,e,r)=>{r.d(e,{A:()=>h}),r(86689);var i=r(13256),o=r(82901),l=r(90676),n=r(81488),a=r(86314),p=r(87550),s=r(18330),d=r(37436),u=r(37720);const c=t=>class extends((0,d.a)(t)){static get properties(){return{maxlength:{type:Number},minlength:{type:Number},pattern:{type:String}}}static get delegateAttrs(){return[...super.delegateAttrs,"maxlength","minlength","pattern"]}static get constraints(){return[...super.constraints,"maxlength","minlength","pattern"]}constructor(){super(),this._setType("text")}get clearElement(){return this.$.clearButton}ready(){super.ready(),this.addController(new s.f(this,(t=>{this._setInputElement(t),this._setFocusElement(t),this.stateTarget=t,this.ariaTarget=t}))),this.addController(new u.q(this.inputElement,this._labelController))}};(0,p.SF)("vaadin-text-field",a.k,{moduleId:"vaadin-text-field-styles"});class h extends(c((0,p.cp)((0,l.q)(i.Pu)))){static get is(){return"vaadin-text-field"}static get template(){return i.qy`
|
3
3
|
<style>
|
4
4
|
[part='input-field'] {
|
5
5
|
flex-grow: 0;
|
@@ -34,7 +34,7 @@
|
|
34
34
|
</div>
|
35
35
|
</div>
|
36
36
|
<slot name="tooltip"></slot>
|
37
|
-
`}static get properties(){return{maxlength:{type:Number},minlength:{type:Number}}}ready(){super.ready(),this._tooltipController=new
|
37
|
+
`}static get properties(){return{maxlength:{type:Number},minlength:{type:Number}}}ready(){super.ready(),this._tooltipController=new n.I(this),this._tooltipController.setPosition("top"),this._tooltipController.setAriaTarget(this.inputElement),this.addController(this._tooltipController)}}(0,o.X)(h)},37436:(t,e,r)=>{r.d(e,{a:()=>o});var i=r(44218);const o=t=>class extends((0,i.R)(t)){static get properties(){return{autocomplete:{type:String},autocorrect:{type:String},autocapitalize:{type:String,reflectToAttribute:!0}}}static get delegateAttrs(){return[...super.delegateAttrs,"autocapitalize","autocomplete","autocorrect"]}get __data(){return this.__dataValue||{}}set __data(t){this.__dataValue=t}_inputElementChanged(t){super._inputElementChanged(t),t&&(t.value&&t.value!==this.value&&(console.warn(`Please define value on the <${this.localName}> component!`),t.value=""),this.value&&(t.value=this.value))}_setFocused(t){super._setFocused(t),!t&&document.hasFocus()&&this.validate()}_onInput(t){super._onInput(t),this.invalid&&this.validate()}_valueChanged(t,e){super._valueChanged(t,e),void 0!==e&&this.invalid&&this.validate()}}},52733:(t,e,r)=>{r(27397);var i=r(47642);(0,r(87550).SF)("vaadin-text-field",i.k,{moduleId:"lumo-text-field-styles"}),r(27136)},54316:(t,e,r)=>{r.r(e),r.d(e,{EmailFieldClass:()=>g,componentName:()=>m}),r(52733);var i=r(47642),o=r(87550);const l=o.AH`
|
38
38
|
:host([dir='rtl']) [part='input-field'] ::slotted(input) {
|
39
39
|
--_lumo-text-field-overflow-mask-image: linear-gradient(to left, transparent, #000 1.25em);
|
40
40
|
}
|
@@ -42,7 +42,7 @@
|
|
42
42
|
:host([dir='rtl']) [part='input-field'] ::slotted(input:placeholder-shown) {
|
43
43
|
--_lumo-text-field-overflow-mask-image: none;
|
44
44
|
}
|
45
|
-
`;(0,
|
45
|
+
`;(0,o.SF)("vaadin-email-field",[i.k,l],{moduleId:"lumo-email-field"});var n=r(82901),a=r(27136);const p=r(51450).AH`
|
46
46
|
:host([dir='rtl']) [part='input-field'] {
|
47
47
|
direction: ltr;
|
48
48
|
}
|
@@ -51,5 +51,5 @@
|
|
51
51
|
direction: rtl;
|
52
52
|
text-align: left;
|
53
53
|
}
|
54
|
-
`;(0,
|
54
|
+
`;(0,o.SF)("vaadin-email-field",p,{moduleId:"vaadin-email-field-styles"});class s extends a.A{static get is(){return"vaadin-email-field"}constructor(){super(),this._setType("email"),this.pattern="^([a-zA-Z0-9_\\.\\-+])+@[a-zA-Z0-9\\-.]+\\.[a-zA-Z0-9\\-]{2,}$"}ready(){super.ready(),this.inputElement&&(this.inputElement.autocapitalize="off")}}(0,n.X)(s);var d=r(79365),u=r(6424),c=r(9696),h=r(97810),y=r(73551);const m=(0,h.xE)("email-field"),g=(0,c.Zz)((0,d.RF)({mappings:u.A}),d.VO,(0,d.RV)({inputType:"email",inputName:"email",autocompleteType:"username",includeAttrs:["disabled","readonly","pattern"]}),(0,d.OZ)({proxyProps:["value","selectionStart"],useProxyTargets:!0}),d.tQ,(t=>class extends t{init(){super.init?.(),this.baseElement.setAttribute("pattern","^[\\w\\.\\%\\+\\-']+@[\\w\\.\\-]+\\.[A-Za-z]{2,}$"),this.getAttribute("autocomplete")||this.setAttribute("autocomplete","username"),this.createExternalInput()}}))((0,d.tz)({slots:["","suffix"],wrappedEleName:"vaadin-email-field",style:()=>`\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${g.cssVarList.inputOutlineWidth}) + var(${g.cssVarList.inputOutlineOffset}));\n box-sizing: border-box;\n\t\t\t}\n ${(0,y.$J)("vaadin-email-field")}\n\t\t\t${(0,y.cy)(g.cssVarList)}\n\t\t\t${(0,y.LJ)("vaadin-email-field",g.cssVarList)}\n ${(0,y.Kl)()}\n\n vaadin-email-field[label-type="floating"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-email-field[label-type="floating"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n :host ::slotted(*) {\n -webkit-mask-image: none;\n }\n\n vaadin-email-field[external-input="true"] > input:not(:placeholder-shown) {\n opacity: 0;\n }\n\t\t`,excludeAttrsSync:["tabindex"],componentName:m}));customElements.define(m,g)}}]);
|
55
55
|
//# sourceMappingURL=descope-email-field-index-js.js.map
|