@dialpad/dialtone-vue 2.142.1 → 2.142.2
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/lib/emoji-picker.cjs +4 -0
- package/dist/lib/emoji-picker.cjs.map +1 -1
- package/dist/lib/emoji-picker.js +4 -0
- package/dist/lib/emoji-picker.js.map +1 -1
- package/dist/lib/input.cjs +8 -12
- package/dist/lib/input.cjs.map +1 -1
- package/dist/lib/input.js +8 -12
- package/dist/lib/input.js.map +1 -1
- package/dist/style.css +118 -116
- package/dist/types/components/input/input_constants.d.ts +3 -15
- package/package.json +3 -3
package/dist/lib/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sources":["../../components/input/input_constants.js","../../components/input/input.vue"],"sourcesContent":["// Valid input types, any other input types (for example: 'radio' or 'checkbox') should\n// use the respective base vue components (radio.vue and checkout.vue).\nexport const INPUT_TYPES = {\n TEXT: 'text',\n TEXTAREA: 'textarea',\n PASSWORD: 'password',\n EMAIL: 'email',\n NUMBER: 'number',\n DATE: 'date',\n TIME: 'time',\n FILE: 'file',\n TEL: 'tel',\n};\n\nexport const INPUT_SIZES = {\n EXTRA_SMALL: 'xs',\n SMALL: 'sm',\n DEFAULT: 'md',\n LARGE: 'lg',\n EXTRA_LARGE: 'xl',\n};\n\nexport const INPUT_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '200',\n lg: '400',\n xl: '500',\n};\n\nexport const INPUT_SIZE_CLASSES = {\n input: {\n xs: 'd-input--xs',\n sm: 'd-input--sm',\n lg: 'd-input--lg',\n xl: 'd-input--xl',\n },\n\n textarea: {\n xs: 'd-textarea--xs',\n sm: 'd-textarea--sm',\n lg: 'd-textarea--lg',\n xl: 'd-textarea--xl',\n },\n};\n\nexport const INPUT_STATE_CLASSES = {\n input: {\n error: 'd-input--error',\n warning: 'd-input--warning',\n success: 'd-input--success',\n },\n\n textarea: {\n error: 'd-textarea--error',\n warning: 'd-textarea--warning',\n success: 'd-textarea--success',\n },\n};\n\nexport const DESCRIPTION_SIZE_CLASSES = {\n lg: 'd-description--lg',\n xl: 'd-description--xl',\n};\n\nexport const LABEL_SIZE_CLASSES = {\n xs: 'd-label--xs',\n sm: 'd-label--sm',\n md: 'd-label--md',\n lg: 'd-label--lg',\n xl: 'd-label--xl',\n};\n\nexport default {\n INPUT_TYPES,\n INPUT_SIZES,\n INPUT_ICON_SIZES,\n INPUT_SIZE_CLASSES,\n INPUT_STATE_CLASSES,\n DESCRIPTION_SIZE_CLASSES,\n LABEL_SIZE_CLASSES,\n};\n","<template>\n <div\n ref=\"container\"\n :class=\"{ 'd-input--hidden': hidden }\"\n data-qa=\"dt-input\"\n >\n <label\n :aria-details=\"$slots.description || description ? descriptionKey : undefined\"\n data-qa=\"dt-input-label-wrapper\"\n >\n <!-- @slot Slot for label, defaults to label prop -->\n <slot name=\"labelSlot\">\n <div\n v-if=\"labelVisible && label\"\n ref=\"label\"\n data-qa=\"dt-input-label\"\n :class=\"[\n 'd-label',\n labelSizeClasses[size],\n ]\"\n >\n {{ label }}\n </div>\n </slot>\n <div\n v-if=\"$slots.description || description || shouldValidateLength\"\n :id=\"descriptionKey\"\n ref=\"description\"\n :class=\"[\n 'd-description',\n descriptionSizeClasses[size],\n ]\"\n data-qa=\"dt-input-description\"\n >\n <div\n v-if=\"$slots.description || description\"\n >\n <!-- @slot Slot for description, defaults to description prop -->\n <slot name=\"description\">{{ description }}</slot>\n </div>\n <div\n v-if=\"shouldValidateLength\"\n data-qa=\"dt-input-length-description\"\n class=\"d-input__length-description\"\n >\n {{ validationProps.length.description }}\n </div>\n </div>\n <div\n :class=\"inputWrapperClasses()\"\n :read-only=\"disabled\"\n >\n <span\n class=\"d-input-icon d-input-icon--left\"\n data-qa=\"dt-input-left-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for left icon -->\n <slot\n name=\"leftIcon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <textarea\n v-if=\"isTextarea\"\n ref=\"input\"\n :value=\"value\"\n :name=\"name\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n :data-qa=\"$attrs['data-qa'] ?? 'dt-input-input'\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n />\n <input\n v-else\n ref=\"input\"\n :value=\"value\"\n :name=\"name\"\n :type=\"type\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n :data-qa=\"$attrs['data-qa'] ?? 'dt-input-input'\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n >\n <span\n class=\"d-input-icon d-input-icon--right\"\n data-qa=\"dt-input-right-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for right icon -->\n <slot\n name=\"rightIcon\"\n :icon-size=\"iconSize\"\n />\n </span>\n </div>\n </label>\n <dt-validation-messages\n :validation-messages=\"validationMessages\"\n :show-messages=\"showMessages\"\n :class=\"messagesClass\"\n v-bind=\"messagesChildProps\"\n data-qa=\"dt-input-messages\"\n />\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DESCRIPTION_SIZE_TYPES, VALIDATION_MESSAGE_TYPES } from '@/common/constants';\nimport {\n INPUT_TYPES,\n INPUT_SIZES,\n INPUT_SIZE_CLASSES,\n INPUT_ICON_SIZES,\n INPUT_STATE_CLASSES,\n DESCRIPTION_SIZE_CLASSES,\n LABEL_SIZE_CLASSES,\n} from './input_constants';\nimport {\n getUniqueString,\n getValidationState,\n} from '@/common/utils';\nimport { DtValidationMessages } from '@/components/validation_messages';\nimport { MessagesMixin } from '@/common/mixins/input';\n\n/**\n * An input field is an input control that allows users to enter alphanumeric information.\n * It can have a range of options and supports single line and multi-line lengths,\n * as well as varying formats, including numbers, masked passwords, etc.\n * @property {Boolean} placeholder attribute\n * @see https://dialtone.dialpad.com/components/input.html\n */\nexport default {\n name: 'DtInput',\n\n components: { DtValidationMessages },\n\n mixins: [MessagesMixin],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Name property of the input element\n */\n name: {\n type: String,\n default: '',\n },\n\n /**\n * Type of the input.\n * When `textarea` a `<textarea>` element will be rendered instead of an `<input>` element.\n * @values text, password, email, number, textarea, date, time, file, tel\n * @default 'text'\n */\n type: {\n type: String,\n default: INPUT_TYPES.TEXT,\n validator: (t) => Object.values(INPUT_TYPES).includes(t),\n },\n\n /**\n * Value of the input\n */\n value: {\n type: [String, Number],\n default: '',\n },\n\n /**\n * Disables the input\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Label for the input\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (t) => Object.values(INPUT_SIZES).includes(t),\n },\n\n /**\n * Additional class name for the input element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n inputClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the input wrapper element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n inputWrapperClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The current character length that the user has entered into the input.\n * This will only need to be used if you are using `validate.length` and\n * the string contains abnormal characters.\n * For example, an emoji could take up many characters in the input, but should only count as 1 character.\n * If no number is provided, a built-in length calculation will be used for the length validation.\n */\n currentLength: {\n type: Number,\n default: null,\n },\n\n /**\n * Whether the input will continue to display a warning validation message even if the input has lost focus.\n */\n retainWarning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Validation for the input. Supports maximum length validation with the structure:\n * `{ \"length\": {\"description\": string, \"max\": number, \"warn\": number, \"message\": string,\n * \"limitMaxLength\": boolean }}`\n */\n validate: {\n type: Object,\n default: null,\n },\n\n /**\n * hidden allows to use input without the element visually present in DOM\n */\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {String}\n */\n 'input',\n\n /**\n * Native input blur event\n *\n * @event blur\n * @type {FocusEvent}\n */\n 'blur',\n\n /**\n * Input clear event\n *\n * @event clear\n */\n 'clear',\n\n /**\n * Native input focus event\n *\n * @event focus\n * @type {FocusEvent}\n */\n 'focus',\n\n /**\n * Native input focusin event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native input focusout event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n\n /**\n * Length of the input when currentLength prop is not passed\n *\n * @event update:length\n * @type {Number}\n */\n 'update:length',\n\n /**\n * Result of the input validation\n *\n * @event update:invalid\n * @type {Boolean}\n */\n 'update:invalid',\n ],\n\n data () {\n return {\n isInputFocused: false,\n isInvalid: false,\n defaultLength: 0,\n };\n },\n\n computed: {\n\n isTextarea () {\n return this.type === INPUT_TYPES.TEXTAREA;\n },\n\n isDefaultSize () {\n return this.size === INPUT_SIZES.DEFAULT;\n },\n\n iconSize () {\n return INPUT_ICON_SIZES[this.size];\n },\n\n isValidSize () {\n return Object.values(INPUT_SIZES).includes(this.size);\n },\n\n isValidDescriptionSize () {\n return Object.values(DESCRIPTION_SIZE_TYPES).includes(this.size);\n },\n\n inputComponent () {\n if (this.isTextarea) {\n return 'textarea';\n }\n\n return 'input';\n },\n\n inputListeners () {\n return {\n /* TODO\n Check if any usages of this component leverage $listeners and either remove if unused or scope the removal\n and migration prior to upgrading to Vue 3.x\n */\n ...this.$listeners,\n input: event => this.$emit('input', event.target.value),\n focus: event => {\n this.isInputFocused = true;\n this.$emit('focus', event);\n },\n\n blur: event => {\n this.isInputFocused = false;\n this.onBlur(event);\n },\n };\n },\n\n descriptionKey () {\n return `input-description-${getUniqueString()}`;\n },\n\n inputState () {\n return getValidationState(this.validationMessages);\n },\n\n defaultLengthCalculation () {\n return this.calculateLength(this.value);\n },\n\n validationProps () {\n return {\n length: {\n description: this?.validate?.length?.description,\n max: this?.validate?.length?.max,\n warn: this?.validate?.length?.warn,\n message: this?.validate?.length?.message,\n limitMaxLength: this?.validate?.length?.limitMaxLength ? this.validate.length.limitMaxLength : false,\n },\n };\n },\n\n validationMessages () {\n // Add length validation message if exists\n if (this.showLengthLimitValidation) {\n return this.formattedMessages.concat([this.inputLengthErrorMessage()]);\n }\n\n return this.formattedMessages;\n },\n\n showInputState () {\n return this.showMessages && this.inputState;\n },\n\n inputLength () {\n return this.currentLength ? this.currentLength : this.defaultLengthCalculation;\n },\n\n inputLengthState () {\n if (this.inputLength < this.validationProps.length.warn) {\n return null;\n } else if (this.inputLength <= this.validationProps.length.max) {\n return this.validationProps.length.warn ? VALIDATION_MESSAGE_TYPES.WARNING : null;\n } else {\n return VALIDATION_MESSAGE_TYPES.ERROR;\n }\n },\n\n shouldValidateLength () {\n // eslint-disable-next-line max-lines\n return !!(\n this.validationProps.length.description &&\n this.validationProps.length.max\n );\n },\n\n shouldLimitMaxLength () {\n return this.shouldValidateLength && this.validationProps.length.limitMaxLength;\n },\n\n // eslint-disable-next-line complexity\n showLengthLimitValidation () {\n return (\n this.shouldValidateLength &&\n this.inputLengthState !== null &&\n this.validationProps.length.message &&\n (this.retainWarning || this.isInputFocused || this.isInvalid)\n );\n },\n\n sizeModifierClass () {\n if (this.isDefaultSize || !this.isValidSize) {\n return '';\n }\n\n return INPUT_SIZE_CLASSES[this.inputComponent][this.size];\n },\n\n stateClass () {\n return [INPUT_STATE_CLASSES[this.inputComponent][this.inputState]];\n },\n },\n\n watch: {\n isInvalid (val) {\n this.$emit('update:invalid', val);\n },\n\n value: {\n immediate: true,\n handler (newValue) {\n if (this.shouldValidateLength) {\n this.validateLength(this.inputLength);\n }\n\n if (this.currentLength == null) {\n this.$emit('update:length', this.calculateLength(newValue));\n }\n },\n },\n },\n\n beforeMount () {\n this.descriptionSizeClasses = DESCRIPTION_SIZE_CLASSES;\n this.labelSizeClasses = LABEL_SIZE_CLASSES;\n },\n\n methods: {\n inputClasses () {\n return [\n this.inputComponent === 'input' ? 'd-input' : 'd-textarea',\n {\n [this.stateClass]: this.showInputState,\n 'd-input-icon--left': this.$slots.leftIcon,\n 'd-input-icon--right': this.$slots.rightIcon,\n },\n this.sizeModifierClass,\n this.inputClass,\n ];\n },\n\n inputWrapperClasses () {\n if (this.hidden) {\n return [];\n }\n return [\n 'd-input__wrapper',\n { [this.stateClass]: this.showInputState },\n this.inputWrapperClass,\n ];\n },\n\n calculateLength (value) {\n if (typeof value !== 'string') {\n return 0;\n }\n\n return [...value].length;\n },\n\n inputLengthErrorMessage () {\n return {\n message: this.validationProps.length.message,\n type: this.inputLengthState,\n };\n },\n\n onBlur (e) {\n // Do not emit a blur event if the target element is a child of this component\n if (!this.$refs.container?.contains(e.relatedTarget)) {\n this.$emit('blur', e);\n }\n },\n\n clear () {\n this.$emit('input', '');\n this.$emit('clear');\n },\n\n blur () {\n this.$refs.input.blur();\n },\n\n focus () {\n this.$refs.input.focus();\n },\n\n select () {\n this.$refs.input.select();\n },\n\n getMessageKey (type, index) {\n return `message-${type}-${index}`;\n },\n\n validateLength (length) {\n this.isInvalid = (length > this.validationProps.length.max);\n },\n },\n};\n</script>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input.js","sources":["../../components/input/input_constants.js","../../components/input/input.vue"],"sourcesContent":["// Valid input types, any other input types (for example: 'radio' or 'checkbox') should\n// use the respective base vue components (radio.vue and checkout.vue).\nexport const INPUT_TYPES = {\n TEXT: 'text',\n TEXTAREA: 'textarea',\n PASSWORD: 'password',\n EMAIL: 'email',\n NUMBER: 'number',\n DATE: 'date',\n TIME: 'time',\n FILE: 'file',\n TEL: 'tel',\n};\n\nexport const INPUT_SIZES = {\n EXTRA_SMALL: 'xs',\n SMALL: 'sm',\n DEFAULT: 'md',\n LARGE: 'lg',\n EXTRA_LARGE: 'xl',\n};\n\nexport const INPUT_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '200',\n lg: '400',\n xl: '500',\n};\n\nexport const INPUT_SIZE_CLASSES = {\n input: {\n xs: 'd-input--xs',\n sm: 'd-input--sm',\n lg: 'd-input--lg',\n xl: 'd-input--xl',\n },\n\n textarea: {\n xs: 'd-textarea--xs',\n sm: 'd-textarea--sm',\n lg: 'd-textarea--lg',\n xl: 'd-textarea--xl',\n },\n};\n\nexport const INPUT_STATE_CLASSES = {\n error: 'd-input--error',\n warning: 'd-input--warning',\n success: 'd-input--success',\n};\n\nexport const DESCRIPTION_SIZE_CLASSES = {\n lg: 'd-description--lg',\n xl: 'd-description--xl',\n};\n\nexport const LABEL_SIZE_CLASSES = {\n xs: 'd-label--xs',\n sm: 'd-label--sm',\n md: 'd-label--md',\n lg: 'd-label--lg',\n xl: 'd-label--xl',\n};\n\nexport default {\n INPUT_TYPES,\n INPUT_SIZES,\n INPUT_ICON_SIZES,\n INPUT_SIZE_CLASSES,\n INPUT_STATE_CLASSES,\n DESCRIPTION_SIZE_CLASSES,\n LABEL_SIZE_CLASSES,\n};\n","<template>\n <div\n ref=\"container\"\n :class=\"['d-input__root', { 'd-input--hidden': hidden }]\"\n data-qa=\"dt-input\"\n >\n <label\n class=\"d-input__label\"\n :aria-details=\"$slots.description || description ? descriptionKey : undefined\"\n data-qa=\"dt-input-label-wrapper\"\n >\n <!-- @slot Slot for label, defaults to label prop -->\n <slot name=\"labelSlot\">\n <div\n v-if=\"labelVisible && label\"\n ref=\"label\"\n data-qa=\"dt-input-label\"\n :class=\"[\n 'd-input__label-text',\n 'd-label',\n labelSizeClasses[size],\n ]\"\n >\n {{ label }}\n </div>\n </slot>\n <div\n v-if=\"$slots.description || description || shouldValidateLength\"\n :id=\"descriptionKey\"\n ref=\"description\"\n :class=\"[\n 'd-input__description',\n 'd-description',\n descriptionSizeClasses[size],\n ]\"\n data-qa=\"dt-input-description\"\n >\n <div\n v-if=\"$slots.description || description\"\n >\n <!-- @slot Slot for description, defaults to description prop -->\n <slot name=\"description\">{{ description }}</slot>\n </div>\n <div\n v-if=\"shouldValidateLength\"\n data-qa=\"dt-input-length-description\"\n class=\"d-input__length-description\"\n >\n {{ validationProps.length.description }}\n </div>\n </div>\n <div\n :class=\"inputWrapperClasses()\"\n :read-only=\"disabled\"\n >\n <span\n class=\"d-input-icon d-input-icon--left\"\n data-qa=\"dt-input-left-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for left icon -->\n <slot\n name=\"leftIcon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <textarea\n v-if=\"isTextarea\"\n ref=\"input\"\n :value=\"value\"\n :name=\"name\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n :data-qa=\"$attrs['data-qa'] ?? 'dt-input-input'\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n />\n <input\n v-else\n ref=\"input\"\n :value=\"value\"\n :name=\"name\"\n :type=\"type\"\n :disabled=\"disabled\"\n :autocomplete=\"$attrs.autocomplete ?? 'off'\"\n :class=\"inputClasses()\"\n :maxlength=\"shouldLimitMaxLength ? validationProps.length.max : null\"\n :data-qa=\"$attrs['data-qa'] ?? 'dt-input-input'\"\n v-bind=\"$attrs\"\n v-on=\"inputListeners\"\n >\n <span\n class=\"d-input-icon d-input-icon--right\"\n data-qa=\"dt-input-right-icon-wrapper\"\n @focusout=\"onBlur\"\n >\n <!-- @slot Slot for right icon -->\n <slot\n name=\"rightIcon\"\n :icon-size=\"iconSize\"\n />\n </span>\n </div>\n </label>\n <dt-validation-messages\n :validation-messages=\"validationMessages\"\n :show-messages=\"showMessages\"\n :class=\"messagesClass\"\n v-bind=\"messagesChildProps\"\n data-qa=\"dt-input-messages\"\n />\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DESCRIPTION_SIZE_TYPES, VALIDATION_MESSAGE_TYPES } from '@/common/constants';\nimport {\n INPUT_TYPES,\n INPUT_SIZES,\n INPUT_SIZE_CLASSES,\n INPUT_ICON_SIZES,\n INPUT_STATE_CLASSES,\n DESCRIPTION_SIZE_CLASSES,\n LABEL_SIZE_CLASSES,\n} from './input_constants';\nimport {\n getUniqueString,\n getValidationState,\n} from '@/common/utils';\nimport { DtValidationMessages } from '@/components/validation_messages';\nimport { MessagesMixin } from '@/common/mixins/input';\n\n/**\n * An input field is an input control that allows users to enter alphanumeric information.\n * It can have a range of options and supports single line and multi-line lengths,\n * as well as varying formats, including numbers, masked passwords, etc.\n * @property {Boolean} placeholder attribute\n * @see https://dialtone.dialpad.com/components/input.html\n */\nexport default {\n name: 'DtInput',\n\n components: { DtValidationMessages },\n\n mixins: [MessagesMixin],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Name property of the input element\n */\n name: {\n type: String,\n default: '',\n },\n\n /**\n * Type of the input.\n * When `textarea` a `<textarea>` element will be rendered instead of an `<input>` element.\n * @values text, password, email, number, textarea, date, time, file, tel\n * @default 'text'\n */\n type: {\n type: String,\n default: INPUT_TYPES.TEXT,\n validator: (t) => Object.values(INPUT_TYPES).includes(t),\n },\n\n /**\n * Value of the input\n */\n value: {\n type: [String, Number],\n default: '',\n },\n\n /**\n * Disables the input\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Label for the input\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (t) => Object.values(INPUT_SIZES).includes(t),\n },\n\n /**\n * Additional class name for the input element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n inputClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the input wrapper element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n inputWrapperClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * The current character length that the user has entered into the input.\n * This will only need to be used if you are using `validate.length` and\n * the string contains abnormal characters.\n * For example, an emoji could take up many characters in the input, but should only count as 1 character.\n * If no number is provided, a built-in length calculation will be used for the length validation.\n */\n currentLength: {\n type: Number,\n default: null,\n },\n\n /**\n * Whether the input will continue to display a warning validation message even if the input has lost focus.\n */\n retainWarning: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Validation for the input. Supports maximum length validation with the structure:\n * `{ \"length\": {\"description\": string, \"max\": number, \"warn\": number, \"message\": string,\n * \"limitMaxLength\": boolean }}`\n */\n validate: {\n type: Object,\n default: null,\n },\n\n /**\n * hidden allows to use input without the element visually present in DOM\n */\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {String}\n */\n 'input',\n\n /**\n * Native input blur event\n *\n * @event blur\n * @type {FocusEvent}\n */\n 'blur',\n\n /**\n * Input clear event\n *\n * @event clear\n */\n 'clear',\n\n /**\n * Native input focus event\n *\n * @event focus\n * @type {FocusEvent}\n */\n 'focus',\n\n /**\n * Native input focusin event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native input focusout event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n\n /**\n * Length of the input when currentLength prop is not passed\n *\n * @event update:length\n * @type {Number}\n */\n 'update:length',\n\n /**\n * Result of the input validation\n *\n * @event update:invalid\n * @type {Boolean}\n */\n 'update:invalid',\n ],\n\n data () {\n return {\n isInputFocused: false,\n isInvalid: false,\n defaultLength: 0,\n };\n },\n\n computed: {\n\n isTextarea () {\n return this.type === INPUT_TYPES.TEXTAREA;\n },\n\n isDefaultSize () {\n return this.size === INPUT_SIZES.DEFAULT;\n },\n\n iconSize () {\n return INPUT_ICON_SIZES[this.size];\n },\n\n isValidSize () {\n return Object.values(INPUT_SIZES).includes(this.size);\n },\n\n isValidDescriptionSize () {\n return Object.values(DESCRIPTION_SIZE_TYPES).includes(this.size);\n },\n\n inputComponent () {\n if (this.isTextarea) {\n return 'textarea';\n }\n\n return 'input';\n },\n\n inputListeners () {\n return {\n /* TODO\n Check if any usages of this component leverage $listeners and either remove if unused or scope the removal\n and migration prior to upgrading to Vue 3.x\n */\n ...this.$listeners,\n input: event => this.$emit('input', event.target.value),\n focus: event => {\n this.isInputFocused = true;\n this.$emit('focus', event);\n },\n\n blur: event => {\n this.isInputFocused = false;\n this.onBlur(event);\n },\n };\n },\n\n descriptionKey () {\n return `input-description-${getUniqueString()}`;\n },\n\n inputState () {\n return getValidationState(this.validationMessages);\n },\n\n defaultLengthCalculation () {\n return this.calculateLength(this.value);\n },\n\n validationProps () {\n return {\n length: {\n description: this?.validate?.length?.description,\n max: this?.validate?.length?.max,\n warn: this?.validate?.length?.warn,\n message: this?.validate?.length?.message,\n limitMaxLength: this?.validate?.length?.limitMaxLength ? this.validate.length.limitMaxLength : false,\n },\n };\n },\n\n validationMessages () {\n // Add length validation message if exists\n if (this.showLengthLimitValidation) {\n return this.formattedMessages.concat([this.inputLengthErrorMessage()]);\n }\n\n return this.formattedMessages;\n },\n\n showInputState () {\n return this.showMessages && this.inputState;\n },\n\n inputLength () {\n return this.currentLength ? this.currentLength : this.defaultLengthCalculation;\n },\n\n inputLengthState () {\n if (this.inputLength < this.validationProps.length.warn) {\n return null;\n } else if (this.inputLength <= this.validationProps.length.max) {\n return this.validationProps.length.warn ? VALIDATION_MESSAGE_TYPES.WARNING : null;\n } else {\n return VALIDATION_MESSAGE_TYPES.ERROR;\n }\n },\n\n shouldValidateLength () {\n // eslint-disable-next-line max-lines\n return !!(\n this.validationProps.length.description &&\n this.validationProps.length.max\n );\n },\n\n shouldLimitMaxLength () {\n return this.shouldValidateLength && this.validationProps.length.limitMaxLength;\n },\n\n // eslint-disable-next-line complexity\n showLengthLimitValidation () {\n return (\n this.shouldValidateLength &&\n this.inputLengthState !== null &&\n this.validationProps.length.message &&\n (this.retainWarning || this.isInputFocused || this.isInvalid)\n );\n },\n\n sizeModifierClass () {\n if (this.isDefaultSize || !this.isValidSize) {\n return '';\n }\n\n return INPUT_SIZE_CLASSES[this.inputComponent][this.size];\n },\n\n stateClass () {\n return [INPUT_STATE_CLASSES[this.inputState]];\n },\n },\n\n watch: {\n isInvalid (val) {\n this.$emit('update:invalid', val);\n },\n\n value: {\n immediate: true,\n handler (newValue) {\n if (this.shouldValidateLength) {\n this.validateLength(this.inputLength);\n }\n\n if (this.currentLength == null) {\n this.$emit('update:length', this.calculateLength(newValue));\n }\n },\n },\n },\n\n beforeMount () {\n this.descriptionSizeClasses = DESCRIPTION_SIZE_CLASSES;\n this.labelSizeClasses = LABEL_SIZE_CLASSES;\n },\n\n methods: {\n inputClasses () {\n return [\n 'd-input__input',\n this.inputComponent === 'input' ? 'd-input' : 'd-textarea',\n {\n [this.stateClass]: this.showInputState,\n 'd-input-icon--left': this.$slots.leftIcon,\n 'd-input-icon--right': this.$slots.rightIcon,\n },\n this.sizeModifierClass,\n this.inputClass,\n ];\n },\n\n inputWrapperClasses () {\n if (this.hidden) {\n return [];\n }\n return [\n 'd-input__wrapper',\n { [this.stateClass]: this.showInputState },\n this.inputWrapperClass,\n ];\n },\n\n calculateLength (value) {\n if (typeof value !== 'string') {\n return 0;\n }\n\n return [...value].length;\n },\n\n inputLengthErrorMessage () {\n return {\n message: this.validationProps.length.message,\n type: this.inputLengthState,\n };\n },\n\n onBlur (e) {\n // Do not emit a blur event if the target element is a child of this component\n if (!this.$refs.container?.contains(e.relatedTarget)) {\n this.$emit('blur', e);\n }\n },\n\n clear () {\n this.$emit('input', '');\n this.$emit('clear');\n },\n\n blur () {\n this.$refs.input.blur();\n },\n\n focus () {\n this.$refs.input.focus();\n },\n\n select () {\n this.$refs.input.select();\n },\n\n getMessageKey (type, index) {\n return `message-${type}-${index}`;\n },\n\n validateLength (length) {\n this.isInvalid = (length > this.validationProps.length.max);\n },\n },\n};\n</script>\n"],"names":[],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -273,6 +273,7 @@
|
|
|
273
273
|
background-color: var(--dt-color-surface-contrast);
|
|
274
274
|
color: var(--dt-color-foreground-secondary-inverted);
|
|
275
275
|
}
|
|
276
|
+
/* stylelint-disable selector-pseudo-class-no-unknown */
|
|
276
277
|
.dt-leftbar-row[data-v-e6da0c41] {
|
|
277
278
|
--leftbar-row-color-foreground: var(--dt-theme-sidebar-color-foreground);
|
|
278
279
|
--leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background);
|
|
@@ -295,14 +296,14 @@
|
|
|
295
296
|
--leftbar-row-action-width: var(--dt-size-550);
|
|
296
297
|
--leftbar-row-action-height: var(--leftbar-row-action-width);
|
|
297
298
|
position: relative;
|
|
298
|
-
opacity: var(--leftbar-row-opacity);
|
|
299
299
|
display: flex;
|
|
300
300
|
background-color: var(--dt-theme-sidebar-row-color-background);
|
|
301
301
|
border-radius: var(--leftbar-row-radius);
|
|
302
|
+
cursor: pointer;
|
|
303
|
+
opacity: var(--leftbar-row-opacity);
|
|
304
|
+
transition-timing-function: var(--ttf-out-quint);
|
|
302
305
|
transition-duration: var(--td200);
|
|
303
306
|
transition-property: background-color, border, box-shadow;
|
|
304
|
-
transition-timing-function: var(--ttf-out-quint);
|
|
305
|
-
cursor: pointer;
|
|
306
307
|
}
|
|
307
308
|
.dt-leftbar-row[data-v-e6da0c41]:not(.dt-leftbar-row--no-action):hover,
|
|
308
309
|
.dt-leftbar-row[data-v-e6da0c41]:not(.dt-leftbar-row--no-action):focus-within {
|
|
@@ -341,13 +342,13 @@
|
|
|
341
342
|
border-bottom-right-radius: var(--dt-size-radius-0);
|
|
342
343
|
}
|
|
343
344
|
.dt-leftbar-row__unread-mention-count-badge[data-v-e6da0c41] {
|
|
345
|
+
background-color: var(--dt-color-purple-500);
|
|
344
346
|
border-top-left-radius: var(--dt-size-radius-0);
|
|
345
347
|
border-bottom-left-radius: var(--dt-size-radius-0);
|
|
346
|
-
background-color: var(--dt-color-purple-500);
|
|
347
348
|
}
|
|
348
349
|
.dt-leftbar-row__unread-mention-only-count-badge[data-v-e6da0c41] {
|
|
349
|
-
background-color: var(--dt-color-purple-500);
|
|
350
350
|
color: var(--dt-color-foreground-primary-inverted);
|
|
351
|
+
background-color: var(--dt-color-purple-500);
|
|
351
352
|
}
|
|
352
353
|
.dt-leftbar-row--muted[data-v-e6da0c41] {
|
|
353
354
|
--leftbar-row-opacity: 60%;
|
|
@@ -364,25 +365,25 @@
|
|
|
364
365
|
}
|
|
365
366
|
.dt-leftbar-row__is-typing[data-v-e6da0c41] {
|
|
366
367
|
--is-typing-size-shape: var(--dt-size-550);
|
|
367
|
-
height: var(--is-typing-size-shape);
|
|
368
|
-
width: var(--is-typing-size-shape);
|
|
369
368
|
position: absolute;
|
|
370
369
|
display: flex;
|
|
370
|
+
gap: var(--dt-space-200);
|
|
371
371
|
align-items: center;
|
|
372
372
|
justify-content: center;
|
|
373
|
-
|
|
373
|
+
width: var(--is-typing-size-shape);
|
|
374
|
+
height: var(--is-typing-size-shape);
|
|
374
375
|
border-radius: var(--dt-size-radius-pill);
|
|
375
376
|
opacity: 0.75;
|
|
376
377
|
}
|
|
377
378
|
.dt-leftbar-row__is-typing span[data-v-e6da0c41] {
|
|
378
|
-
transition: all 500ms ease;
|
|
379
|
-
background: var(--dt-color-surface-strong);
|
|
380
|
-
height: 4px;
|
|
381
|
-
width: 4px;
|
|
382
379
|
display: inline-block;
|
|
380
|
+
width: var(--dt-size-300);
|
|
381
|
+
height: var(--dt-size-300);
|
|
383
382
|
padding: 0;
|
|
384
|
-
|
|
383
|
+
background: var(--dt-color-surface-strong);
|
|
385
384
|
border-radius: var(--dt-size-radius-pill);
|
|
385
|
+
opacity: 0.3;
|
|
386
|
+
transition: all 500ms ease;
|
|
386
387
|
animation: wave-e6da0c41 1.5s ease infinite;
|
|
387
388
|
}
|
|
388
389
|
.dt-leftbar-row__is-typing span[data-v-e6da0c41]:nth-child(1) {
|
|
@@ -396,20 +397,20 @@
|
|
|
396
397
|
}
|
|
397
398
|
.dt-leftbar-row__primary[data-v-e6da0c41] {
|
|
398
399
|
display: flex;
|
|
399
|
-
align-items: center;
|
|
400
400
|
flex: 1;
|
|
401
|
+
align-items: center;
|
|
401
402
|
width: 100%;
|
|
402
|
-
|
|
403
|
-
|
|
403
|
+
margin: 0;
|
|
404
|
+
padding: 0;
|
|
404
405
|
color: var(--leftbar-row-color-foreground);
|
|
405
|
-
text-decoration: none;
|
|
406
|
-
appearance: none;
|
|
407
406
|
font-size: inherit;
|
|
408
407
|
line-height: inherit;
|
|
409
|
-
|
|
408
|
+
text-align: left;
|
|
409
|
+
text-decoration: none;
|
|
410
|
+
background-color: var(--leftbar-row-color-background);
|
|
410
411
|
border: 0;
|
|
411
|
-
padding: 0;
|
|
412
412
|
border-radius: var(--leftbar-row-radius);
|
|
413
|
+
appearance: none;
|
|
413
414
|
}
|
|
414
415
|
.dt-leftbar-row__primary[data-v-e6da0c41]:active {
|
|
415
416
|
--leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background-active);
|
|
@@ -418,20 +419,20 @@
|
|
|
418
419
|
box-shadow: var(--dt-shadow-focus-inset);
|
|
419
420
|
}
|
|
420
421
|
.dt-leftbar-row__action-button[data-v-e6da0c41] {
|
|
421
|
-
opacity: 0;
|
|
422
422
|
width: var(--leftbar-row-action-width);
|
|
423
423
|
height: var(--leftbar-row-action-height);
|
|
424
|
+
opacity: 0;
|
|
424
425
|
}
|
|
425
426
|
.dt-leftbar-row__alpha[data-v-e6da0c41] {
|
|
426
|
-
color: var(--leftbar-row-alpha-color-foreground);
|
|
427
427
|
display: flex;
|
|
428
|
-
box-sizing: border-box;
|
|
429
|
-
justify-content: center;
|
|
430
428
|
align-items: center;
|
|
431
|
-
|
|
432
|
-
|
|
429
|
+
justify-content: center;
|
|
430
|
+
box-sizing: border-box;
|
|
433
431
|
width: var(--leftbar-row-alpha-width);
|
|
434
432
|
height: var(--leftbar-row-alpha-height);
|
|
433
|
+
padding-right: var(--dt-space-400);
|
|
434
|
+
padding-left: var(--dt-space-400);
|
|
435
|
+
color: var(--leftbar-row-alpha-color-foreground);
|
|
435
436
|
border-radius: var(--leftbar-row-radius) 0 0 var(--leftbar-row-radius);
|
|
436
437
|
}
|
|
437
438
|
.dt-leftbar-row__label[data-v-e6da0c41] {
|
|
@@ -440,47 +441,47 @@
|
|
|
440
441
|
}
|
|
441
442
|
.dt-leftbar-row__omega[data-v-e6da0c41] {
|
|
442
443
|
position: absolute;
|
|
443
|
-
display: flex;
|
|
444
|
-
right: var(--leftbar-row-action-position-right);
|
|
445
444
|
top: var(--leftbar-row-action-position-bottom);
|
|
446
|
-
|
|
445
|
+
right: var(--leftbar-row-action-position-right);
|
|
446
|
+
display: flex;
|
|
447
447
|
gap: var(--dt-space-300);
|
|
448
|
-
justify-content: flex-end;
|
|
449
448
|
align-items: center;
|
|
449
|
+
justify-content: flex-end;
|
|
450
450
|
box-sizing: border-box;
|
|
451
451
|
border-radius: var(--leftbar-row-radius);
|
|
452
|
+
transform: translateY(calc(var(--leftbar-row-action-position-bottom) * -1));
|
|
452
453
|
}
|
|
453
454
|
.dt-leftbar-row__unread-badge[data-v-e6da0c41] {
|
|
454
455
|
display: var(--leftbar-row-unread-badge-display);
|
|
455
456
|
}
|
|
456
457
|
.dt-leftbar-row__active-voice[data-v-e6da0c41] {
|
|
457
|
-
color: var(--dt-color-purple-400);
|
|
458
458
|
display: inline-flex;
|
|
459
|
+
color: var(--dt-color-purple-400);
|
|
459
460
|
-webkit-animation-name: opacity-pulsate-e6da0c41;
|
|
460
|
-
-webkit-animation-duration: 1s;
|
|
461
|
-
-webkit-animation-iteration-count: infinite;
|
|
462
|
-
-webkit-animation-fill-mode: both;
|
|
463
461
|
-moz-animation-name: opacity-pulsate-e6da0c41;
|
|
464
|
-
-moz-animation-duration: 1s;
|
|
465
|
-
-moz-animation-iteration-count: infinite;
|
|
466
|
-
-moz-animation-fill-mode: both;
|
|
467
462
|
animation-name: opacity-pulsate-e6da0c41;
|
|
463
|
+
-webkit-animation-duration: 1s;
|
|
464
|
+
-moz-animation-duration: 1s;
|
|
468
465
|
animation-duration: 1s;
|
|
466
|
+
-webkit-animation-iteration-count: infinite;
|
|
467
|
+
-moz-animation-iteration-count: infinite;
|
|
469
468
|
animation-iteration-count: infinite;
|
|
469
|
+
-webkit-animation-fill-mode: both;
|
|
470
|
+
-moz-animation-fill-mode: both;
|
|
470
471
|
animation-fill-mode: both;
|
|
471
472
|
}
|
|
472
473
|
.dt-leftbar-row__dnd[data-v-e6da0c41] {
|
|
473
474
|
padding-top: var(--dt-space-200);
|
|
474
475
|
padding-right: var(--dt-space-300);
|
|
475
476
|
color: var(--dt-color-foreground-tertiary);
|
|
477
|
+
font-weight: var(--dt-font-weight-medium);
|
|
476
478
|
font-size: var(--dt-font-size-100);
|
|
477
479
|
line-height: var(--dt-font-line-height-400);
|
|
478
|
-
font-weight: var(--dt-font-weight-medium);
|
|
479
480
|
}
|
|
480
481
|
.dt-leftbar-row__container--off-duty[data-v-e6da0c41] {
|
|
481
|
-
border-radius: var(--dt-size-radius-500);
|
|
482
482
|
background-color: var(--dt-badge-color-background-critical);
|
|
483
483
|
border: var(--dt-size-100) solid var(--dt-color-border-subtle);
|
|
484
|
+
border-radius: var(--dt-size-radius-500);
|
|
484
485
|
}
|
|
485
486
|
.dt-leftbar-row__container--off-duty[data-v-e6da0c41] .dt-leftbar-row__primary {
|
|
486
487
|
margin: calc(var(--dt-size-100) * -1);
|
|
@@ -498,48 +499,48 @@
|
|
|
498
499
|
}
|
|
499
500
|
.dt-leftbar-row[data-v-e6da0c41] .dt-leftbar-row__description {
|
|
500
501
|
display: block;
|
|
502
|
+
overflow: hidden;
|
|
503
|
+
color: var(--leftbar-row-description-color-foreground);
|
|
501
504
|
font-weight: var(--leftbar-row-description-font-weight);
|
|
502
505
|
font-size: var(--leftbar-row-description-font-size);
|
|
503
506
|
line-height: var(--leftbar-row-description-line-height);
|
|
504
|
-
color: var(--leftbar-row-description-color-foreground);
|
|
505
|
-
overflow: hidden;
|
|
506
|
-
text-overflow: ellipsis;
|
|
507
507
|
white-space: nowrap;
|
|
508
|
+
text-overflow: ellipsis;
|
|
508
509
|
}
|
|
509
510
|
.dt-leftbar-row[data-v-e6da0c41] .dt-leftbar-row__status {
|
|
510
511
|
display: block;
|
|
512
|
+
padding-bottom: var(--dt-space-100);
|
|
513
|
+
overflow: hidden;
|
|
511
514
|
color: var(--leftbar-row-status-color-foreground);
|
|
512
515
|
font-size: var(--leftbar-row-status-font-size);
|
|
513
516
|
line-height: var(--leftbar-row-status-line-height);
|
|
514
|
-
padding-bottom: var(--dt-space-100);
|
|
515
|
-
overflow: hidden;
|
|
516
|
-
text-overflow: ellipsis;
|
|
517
517
|
white-space: nowrap;
|
|
518
|
+
text-overflow: ellipsis;
|
|
518
519
|
}
|
|
519
|
-
.dt-leftbar-row[data-v-e6da0c41] .dt-leftbar-row__meta-context ~ .dt-leftbar-row__meta-custom:not(:empty)
|
|
520
|
-
content: ' • ';
|
|
520
|
+
.dt-leftbar-row[data-v-e6da0c41] .dt-leftbar-row__meta-context ~ .dt-leftbar-row__meta-custom:not(:empty)::before {
|
|
521
521
|
color: var(--dt-theme-sidebar-status-color-foreground);
|
|
522
|
+
content: ' • ';
|
|
522
523
|
}
|
|
523
524
|
.dt-leftbar-row__icon-cc[data-v-e6da0c41] {
|
|
524
|
-
border-radius: var(--dt-size-200);
|
|
525
525
|
width: calc(var(--dt-size-300) * 3.5);
|
|
526
526
|
height: calc(var(--dt-size-300) * 3.5);
|
|
527
|
+
border-radius: var(--dt-size-200);
|
|
527
528
|
}
|
|
528
529
|
.opacity-pulsate[data-v-e6da0c41] {
|
|
529
530
|
-webkit-animation-name: opacity-pulsate-e6da0c41;
|
|
530
|
-
-webkit-animation-duration: 1s;
|
|
531
|
-
-webkit-animation-iteration-count: infinite;
|
|
532
|
-
-webkit-animation-fill-mode: both;
|
|
533
531
|
-moz-animation-name: opacity-pulsate-e6da0c41;
|
|
534
|
-
-moz-animation-duration: 1s;
|
|
535
|
-
-moz-animation-iteration-count: infinite;
|
|
536
|
-
-moz-animation-fill-mode: both;
|
|
537
532
|
animation-name: opacity-pulsate-e6da0c41;
|
|
533
|
+
-webkit-animation-duration: 1s;
|
|
534
|
+
-moz-animation-duration: 1s;
|
|
538
535
|
animation-duration: 1s;
|
|
536
|
+
-webkit-animation-iteration-count: infinite;
|
|
537
|
+
-moz-animation-iteration-count: infinite;
|
|
539
538
|
animation-iteration-count: infinite;
|
|
539
|
+
-webkit-animation-fill-mode: both;
|
|
540
|
+
-moz-animation-fill-mode: both;
|
|
540
541
|
animation-fill-mode: both;
|
|
541
542
|
}
|
|
542
|
-
|
|
543
|
+
@keyframes opacity-pulsate-e6da0c41 {
|
|
543
544
|
0%,
|
|
544
545
|
100% {
|
|
545
546
|
opacity: 0.2;
|
|
@@ -548,7 +549,7 @@
|
|
|
548
549
|
opacity: 1;
|
|
549
550
|
}
|
|
550
551
|
}
|
|
551
|
-
|
|
552
|
+
@keyframes opacity-pulsate-e6da0c41 {
|
|
552
553
|
0%,
|
|
553
554
|
100% {
|
|
554
555
|
opacity: 0.2;
|
|
@@ -573,10 +574,11 @@
|
|
|
573
574
|
transform: translate(0, 0);
|
|
574
575
|
}
|
|
575
576
|
10% {
|
|
576
|
-
transform: translate(0, -
|
|
577
|
-
opacity:
|
|
577
|
+
transform: translate(0, -0.5rem);
|
|
578
|
+
opacity: 0.9;
|
|
578
579
|
}
|
|
579
580
|
}
|
|
581
|
+
/* stylelint-disable selector-pseudo-class-no-unknown */
|
|
580
582
|
.dt-leftbar-row[data-v-f44e0386] {
|
|
581
583
|
--leftbar-row-color-foreground: var(--dt-theme-sidebar-color-foreground);
|
|
582
584
|
--leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background);
|
|
@@ -599,14 +601,14 @@
|
|
|
599
601
|
--leftbar-row-action-width: var(--dt-size-550);
|
|
600
602
|
--leftbar-row-action-height: var(--leftbar-row-action-width);
|
|
601
603
|
position: relative;
|
|
602
|
-
opacity: var(--leftbar-row-opacity);
|
|
603
604
|
display: flex;
|
|
604
605
|
background-color: var(--dt-theme-sidebar-row-color-background);
|
|
605
606
|
border-radius: var(--leftbar-row-radius);
|
|
607
|
+
cursor: pointer;
|
|
608
|
+
opacity: var(--leftbar-row-opacity);
|
|
609
|
+
transition-timing-function: var(--ttf-out-quint);
|
|
606
610
|
transition-duration: var(--td200);
|
|
607
611
|
transition-property: background-color, border, box-shadow;
|
|
608
|
-
transition-timing-function: var(--ttf-out-quint);
|
|
609
|
-
cursor: pointer;
|
|
610
612
|
}
|
|
611
613
|
.dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):hover,
|
|
612
614
|
.dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):focus-within {
|
|
@@ -645,13 +647,13 @@
|
|
|
645
647
|
border-bottom-right-radius: var(--dt-size-radius-0);
|
|
646
648
|
}
|
|
647
649
|
.dt-leftbar-row__unread-mention-count-badge[data-v-f44e0386] {
|
|
650
|
+
background-color: var(--dt-color-purple-500);
|
|
648
651
|
border-top-left-radius: var(--dt-size-radius-0);
|
|
649
652
|
border-bottom-left-radius: var(--dt-size-radius-0);
|
|
650
|
-
background-color: var(--dt-color-purple-500);
|
|
651
653
|
}
|
|
652
654
|
.dt-leftbar-row__unread-mention-only-count-badge[data-v-f44e0386] {
|
|
653
|
-
background-color: var(--dt-color-purple-500);
|
|
654
655
|
color: var(--dt-color-foreground-primary-inverted);
|
|
656
|
+
background-color: var(--dt-color-purple-500);
|
|
655
657
|
}
|
|
656
658
|
.dt-leftbar-row--muted[data-v-f44e0386] {
|
|
657
659
|
--leftbar-row-opacity: 60%;
|
|
@@ -668,25 +670,25 @@
|
|
|
668
670
|
}
|
|
669
671
|
.dt-leftbar-row__is-typing[data-v-f44e0386] {
|
|
670
672
|
--is-typing-size-shape: var(--dt-size-550);
|
|
671
|
-
height: var(--is-typing-size-shape);
|
|
672
|
-
width: var(--is-typing-size-shape);
|
|
673
673
|
position: absolute;
|
|
674
674
|
display: flex;
|
|
675
|
+
gap: var(--dt-space-200);
|
|
675
676
|
align-items: center;
|
|
676
677
|
justify-content: center;
|
|
677
|
-
|
|
678
|
+
width: var(--is-typing-size-shape);
|
|
679
|
+
height: var(--is-typing-size-shape);
|
|
678
680
|
border-radius: var(--dt-size-radius-pill);
|
|
679
681
|
opacity: 0.75;
|
|
680
682
|
}
|
|
681
683
|
.dt-leftbar-row__is-typing span[data-v-f44e0386] {
|
|
682
|
-
transition: all 500ms ease;
|
|
683
|
-
background: var(--dt-color-surface-strong);
|
|
684
|
-
height: 4px;
|
|
685
|
-
width: 4px;
|
|
686
684
|
display: inline-block;
|
|
685
|
+
width: var(--dt-size-300);
|
|
686
|
+
height: var(--dt-size-300);
|
|
687
687
|
padding: 0;
|
|
688
|
-
|
|
688
|
+
background: var(--dt-color-surface-strong);
|
|
689
689
|
border-radius: var(--dt-size-radius-pill);
|
|
690
|
+
opacity: 0.3;
|
|
691
|
+
transition: all 500ms ease;
|
|
690
692
|
animation: wave-f44e0386 1.5s ease infinite;
|
|
691
693
|
}
|
|
692
694
|
.dt-leftbar-row__is-typing span[data-v-f44e0386]:nth-child(1) {
|
|
@@ -700,20 +702,20 @@
|
|
|
700
702
|
}
|
|
701
703
|
.dt-leftbar-row__primary[data-v-f44e0386] {
|
|
702
704
|
display: flex;
|
|
703
|
-
align-items: center;
|
|
704
705
|
flex: 1;
|
|
706
|
+
align-items: center;
|
|
705
707
|
width: 100%;
|
|
706
|
-
|
|
707
|
-
|
|
708
|
+
margin: 0;
|
|
709
|
+
padding: 0;
|
|
708
710
|
color: var(--leftbar-row-color-foreground);
|
|
709
|
-
text-decoration: none;
|
|
710
|
-
appearance: none;
|
|
711
711
|
font-size: inherit;
|
|
712
712
|
line-height: inherit;
|
|
713
|
-
|
|
713
|
+
text-align: left;
|
|
714
|
+
text-decoration: none;
|
|
715
|
+
background-color: var(--leftbar-row-color-background);
|
|
714
716
|
border: 0;
|
|
715
|
-
padding: 0;
|
|
716
717
|
border-radius: var(--leftbar-row-radius);
|
|
718
|
+
appearance: none;
|
|
717
719
|
}
|
|
718
720
|
.dt-leftbar-row__primary[data-v-f44e0386]:active {
|
|
719
721
|
--leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background-active);
|
|
@@ -722,20 +724,20 @@
|
|
|
722
724
|
box-shadow: var(--dt-shadow-focus-inset);
|
|
723
725
|
}
|
|
724
726
|
.dt-leftbar-row__action-button[data-v-f44e0386] {
|
|
725
|
-
opacity: 0;
|
|
726
727
|
width: var(--leftbar-row-action-width);
|
|
727
728
|
height: var(--leftbar-row-action-height);
|
|
729
|
+
opacity: 0;
|
|
728
730
|
}
|
|
729
731
|
.dt-leftbar-row__alpha[data-v-f44e0386] {
|
|
730
|
-
color: var(--leftbar-row-alpha-color-foreground);
|
|
731
732
|
display: flex;
|
|
732
|
-
box-sizing: border-box;
|
|
733
|
-
justify-content: center;
|
|
734
733
|
align-items: center;
|
|
735
|
-
|
|
736
|
-
|
|
734
|
+
justify-content: center;
|
|
735
|
+
box-sizing: border-box;
|
|
737
736
|
width: var(--leftbar-row-alpha-width);
|
|
738
737
|
height: var(--leftbar-row-alpha-height);
|
|
738
|
+
padding-right: var(--dt-space-400);
|
|
739
|
+
padding-left: var(--dt-space-400);
|
|
740
|
+
color: var(--leftbar-row-alpha-color-foreground);
|
|
739
741
|
border-radius: var(--leftbar-row-radius) 0 0 var(--leftbar-row-radius);
|
|
740
742
|
}
|
|
741
743
|
.dt-leftbar-row__label[data-v-f44e0386] {
|
|
@@ -744,47 +746,47 @@
|
|
|
744
746
|
}
|
|
745
747
|
.dt-leftbar-row__omega[data-v-f44e0386] {
|
|
746
748
|
position: absolute;
|
|
747
|
-
display: flex;
|
|
748
|
-
right: var(--leftbar-row-action-position-right);
|
|
749
749
|
top: var(--leftbar-row-action-position-bottom);
|
|
750
|
-
|
|
750
|
+
right: var(--leftbar-row-action-position-right);
|
|
751
|
+
display: flex;
|
|
751
752
|
gap: var(--dt-space-300);
|
|
752
|
-
justify-content: flex-end;
|
|
753
753
|
align-items: center;
|
|
754
|
+
justify-content: flex-end;
|
|
754
755
|
box-sizing: border-box;
|
|
755
756
|
border-radius: var(--leftbar-row-radius);
|
|
757
|
+
transform: translateY(calc(var(--leftbar-row-action-position-bottom) * -1));
|
|
756
758
|
}
|
|
757
759
|
.dt-leftbar-row__unread-badge[data-v-f44e0386] {
|
|
758
760
|
display: var(--leftbar-row-unread-badge-display);
|
|
759
761
|
}
|
|
760
762
|
.dt-leftbar-row__active-voice[data-v-f44e0386] {
|
|
761
|
-
color: var(--dt-color-purple-400);
|
|
762
763
|
display: inline-flex;
|
|
764
|
+
color: var(--dt-color-purple-400);
|
|
763
765
|
-webkit-animation-name: opacity-pulsate-f44e0386;
|
|
764
|
-
-webkit-animation-duration: 1s;
|
|
765
|
-
-webkit-animation-iteration-count: infinite;
|
|
766
|
-
-webkit-animation-fill-mode: both;
|
|
767
766
|
-moz-animation-name: opacity-pulsate-f44e0386;
|
|
768
|
-
-moz-animation-duration: 1s;
|
|
769
|
-
-moz-animation-iteration-count: infinite;
|
|
770
|
-
-moz-animation-fill-mode: both;
|
|
771
767
|
animation-name: opacity-pulsate-f44e0386;
|
|
768
|
+
-webkit-animation-duration: 1s;
|
|
769
|
+
-moz-animation-duration: 1s;
|
|
772
770
|
animation-duration: 1s;
|
|
771
|
+
-webkit-animation-iteration-count: infinite;
|
|
772
|
+
-moz-animation-iteration-count: infinite;
|
|
773
773
|
animation-iteration-count: infinite;
|
|
774
|
+
-webkit-animation-fill-mode: both;
|
|
775
|
+
-moz-animation-fill-mode: both;
|
|
774
776
|
animation-fill-mode: both;
|
|
775
777
|
}
|
|
776
778
|
.dt-leftbar-row__dnd[data-v-f44e0386] {
|
|
777
779
|
padding-top: var(--dt-space-200);
|
|
778
780
|
padding-right: var(--dt-space-300);
|
|
779
781
|
color: var(--dt-color-foreground-tertiary);
|
|
782
|
+
font-weight: var(--dt-font-weight-medium);
|
|
780
783
|
font-size: var(--dt-font-size-100);
|
|
781
784
|
line-height: var(--dt-font-line-height-400);
|
|
782
|
-
font-weight: var(--dt-font-weight-medium);
|
|
783
785
|
}
|
|
784
786
|
.dt-leftbar-row__container--off-duty[data-v-f44e0386] {
|
|
785
|
-
border-radius: var(--dt-size-radius-500);
|
|
786
787
|
background-color: var(--dt-badge-color-background-critical);
|
|
787
788
|
border: var(--dt-size-100) solid var(--dt-color-border-subtle);
|
|
789
|
+
border-radius: var(--dt-size-radius-500);
|
|
788
790
|
}
|
|
789
791
|
.dt-leftbar-row__container--off-duty[data-v-f44e0386] .dt-leftbar-row__primary {
|
|
790
792
|
margin: calc(var(--dt-size-100) * -1);
|
|
@@ -802,48 +804,48 @@
|
|
|
802
804
|
}
|
|
803
805
|
.dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__description {
|
|
804
806
|
display: block;
|
|
807
|
+
overflow: hidden;
|
|
808
|
+
color: var(--leftbar-row-description-color-foreground);
|
|
805
809
|
font-weight: var(--leftbar-row-description-font-weight);
|
|
806
810
|
font-size: var(--leftbar-row-description-font-size);
|
|
807
811
|
line-height: var(--leftbar-row-description-line-height);
|
|
808
|
-
color: var(--leftbar-row-description-color-foreground);
|
|
809
|
-
overflow: hidden;
|
|
810
|
-
text-overflow: ellipsis;
|
|
811
812
|
white-space: nowrap;
|
|
813
|
+
text-overflow: ellipsis;
|
|
812
814
|
}
|
|
813
815
|
.dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__status {
|
|
814
816
|
display: block;
|
|
817
|
+
padding-bottom: var(--dt-space-100);
|
|
818
|
+
overflow: hidden;
|
|
815
819
|
color: var(--leftbar-row-status-color-foreground);
|
|
816
820
|
font-size: var(--leftbar-row-status-font-size);
|
|
817
821
|
line-height: var(--leftbar-row-status-line-height);
|
|
818
|
-
padding-bottom: var(--dt-space-100);
|
|
819
|
-
overflow: hidden;
|
|
820
|
-
text-overflow: ellipsis;
|
|
821
822
|
white-space: nowrap;
|
|
823
|
+
text-overflow: ellipsis;
|
|
822
824
|
}
|
|
823
|
-
.dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__meta-context ~ .dt-leftbar-row__meta-custom:not(:empty)
|
|
824
|
-
content: ' • ';
|
|
825
|
+
.dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__meta-context ~ .dt-leftbar-row__meta-custom:not(:empty)::before {
|
|
825
826
|
color: var(--dt-theme-sidebar-status-color-foreground);
|
|
827
|
+
content: ' • ';
|
|
826
828
|
}
|
|
827
829
|
.dt-leftbar-row__icon-cc[data-v-f44e0386] {
|
|
828
|
-
border-radius: var(--dt-size-200);
|
|
829
830
|
width: calc(var(--dt-size-300) * 3.5);
|
|
830
831
|
height: calc(var(--dt-size-300) * 3.5);
|
|
832
|
+
border-radius: var(--dt-size-200);
|
|
831
833
|
}
|
|
832
834
|
.opacity-pulsate[data-v-f44e0386] {
|
|
833
835
|
-webkit-animation-name: opacity-pulsate-f44e0386;
|
|
834
|
-
-webkit-animation-duration: 1s;
|
|
835
|
-
-webkit-animation-iteration-count: infinite;
|
|
836
|
-
-webkit-animation-fill-mode: both;
|
|
837
836
|
-moz-animation-name: opacity-pulsate-f44e0386;
|
|
838
|
-
-moz-animation-duration: 1s;
|
|
839
|
-
-moz-animation-iteration-count: infinite;
|
|
840
|
-
-moz-animation-fill-mode: both;
|
|
841
837
|
animation-name: opacity-pulsate-f44e0386;
|
|
838
|
+
-webkit-animation-duration: 1s;
|
|
839
|
+
-moz-animation-duration: 1s;
|
|
842
840
|
animation-duration: 1s;
|
|
841
|
+
-webkit-animation-iteration-count: infinite;
|
|
842
|
+
-moz-animation-iteration-count: infinite;
|
|
843
843
|
animation-iteration-count: infinite;
|
|
844
|
+
-webkit-animation-fill-mode: both;
|
|
845
|
+
-moz-animation-fill-mode: both;
|
|
844
846
|
animation-fill-mode: both;
|
|
845
847
|
}
|
|
846
|
-
|
|
848
|
+
@keyframes opacity-pulsate-f44e0386 {
|
|
847
849
|
0%,
|
|
848
850
|
100% {
|
|
849
851
|
opacity: 0.2;
|
|
@@ -852,7 +854,7 @@
|
|
|
852
854
|
opacity: 1;
|
|
853
855
|
}
|
|
854
856
|
}
|
|
855
|
-
|
|
857
|
+
@keyframes opacity-pulsate-f44e0386 {
|
|
856
858
|
0%,
|
|
857
859
|
100% {
|
|
858
860
|
opacity: 0.2;
|
|
@@ -877,8 +879,8 @@
|
|
|
877
879
|
transform: translate(0, 0);
|
|
878
880
|
}
|
|
879
881
|
10% {
|
|
880
|
-
transform: translate(0, -
|
|
881
|
-
opacity:
|
|
882
|
+
transform: translate(0, -0.5rem);
|
|
883
|
+
opacity: 0.9;
|
|
882
884
|
}
|
|
883
885
|
}
|
|
884
886
|
.dt-recipe-callbox[data-v-ef08f46e] {
|