diff --git a/apps/dialtone-documentation/docs/components/rich-text-editor.md b/apps/dialtone-documentation/docs/components/rich-text-editor.md index 6dff6f31b1..1e9c3afb64 100644 --- a/apps/dialtone-documentation/docs/components/rich-text-editor.md +++ b/apps/dialtone-documentation/docs/components/rich-text-editor.md @@ -6,23 +6,8 @@ storybook: https://dialtone.dialpad.com/vue/?path=/story/components-rich-text-ed keywords: ["rte", "wysiwyg", "markdown", "d-rte", "DtRichTextEditor", "dt-rich-text-editor", "content editor", "rich editor"] --- - - Not a standalone component, please use Message Input instead - - +> [!INFO] +> Not a standalone component, please use Message Input recipe instead diff --git a/packages/combinator/src/components/combinator.vue b/packages/combinator/src/components/combinator.vue index 1c72dd0041..9b0ce10cb0 100644 --- a/packages/combinator/src/components/combinator.vue +++ b/packages/combinator/src/components/combinator.vue @@ -158,8 +158,9 @@ import DtcRenderer from './renderer/renderer.vue'; import { enumerateGroups } from '@/src/lib/utils'; import { shouldExclude } from '@/src/lib/exclusion_rules'; import { buildDependencyMap, shouldHideProp } from '@/src/lib/prop_dependencies'; -import { computed, nextTick, onErrorCaptured, reactive, ref } from 'vue'; +import { computed, nextTick, onErrorCaptured, reactive, ref, watch } from 'vue'; import { cachedRef, computedModel } from '@/src/lib/utils_vue'; +import { clearTokenCache } from '@/src/lib/tokens'; import { getComponentInfo } from '@/src/lib/info'; import { SETTINGS_BACKGROUND_KEY, @@ -232,7 +233,7 @@ const _forceReset = ref(0); const variantOptions = computed(() => { return Object.keys(props.variants ?? {}) - .filter(key => key !== 'exclusions') + .filter(key => key !== 'exclusions' && key !== 'defaults') .map(key => ({ value: key, label: key })); }); @@ -351,6 +352,8 @@ const settings = computedModel( }, ); +watch(() => settings.value.root.theme, clearTokenCache); + function updateVariant (e) { _presetChanging = true; selectedVariant.value = e; @@ -361,20 +364,29 @@ function updateVariant (e) { nextTick(() => { _presetChanging = false; }); } +/** + * Merges variant override data into an info object. + * + * @param {object} info - The info object to merge into. + * @param {object} variantData - The variant data to merge. + */ +function mergeVariantData (info, variantData) { + if (!variantData) return; + Object.entries(variantData).forEach(([memberGroup, members]) => { + if (memberGroup === 'exclusions') return; + Object.entries(members).forEach(([memberName, member]) => { + const infoMember = info[memberGroup]?.find(m => m.name === memberName); + if (infoMember) Object.assign(infoMember, member); + }); + }); +} + const defaultInfo = computed(() => { const info = cloneInfoMembers( getComponentInfo(props.component, props.documentation), ); - const defaultVariant = props.variants?.default; - if (defaultVariant) { - Object.entries(defaultVariant).forEach(([memberGroup, members]) => { - if (memberGroup === 'exclusions') return; - Object.entries(members).forEach(([memberName, member]) => { - const infoMember = info[memberGroup]?.find(m => m.name === memberName); - if (infoMember) Object.assign(infoMember, member); - }); - }); - } + mergeVariantData(info, props.variants?.defaults); + mergeVariantData(info, props.variants?.default); return info; }); @@ -406,19 +418,8 @@ function initializeInfo () { getComponentInfo(props.component, props.documentation), ); - const variantInfo = props.variants?.[activeVariant.value]; - - if (variantInfo) { - Object.entries(variantInfo).forEach(([memberGroup, members]) => { - if (memberGroup === 'exclusions') return; - Object.entries(members).forEach(([memberName, member]) => { - const infoMember = info[memberGroup]?.find(m => m.name === memberName); - if (infoMember) { - Object.assign(infoMember, member); - } - }); - }); - } + mergeVariantData(info, props.variants?.defaults); + mergeVariantData(info, props.variants?.[activeVariant.value]); info.exclusions = props.variants?.exclusions ?? []; @@ -580,15 +581,17 @@ export default { padding-inline-start: var(--dt-spacing-400); display: grid; flex: 1; - align-items: center; - justify-content: center; - position: relative; + place-items: center; @media screen and (min-width: 640px) { min-block-size: var(--dt-size-925); } } + &__component-content { + display: contents; + } + &__resizer { inline-size: 32px; cursor: col-resize; @@ -611,7 +614,7 @@ export default { } &__controls { - inline-size: var(--dt-size-875); + inline-size: var(--dt-size-900); max-inline-size: var(--dt-size-1000); flex-shrink: 0; max-block-size: var(--dt-size-950); @@ -619,6 +622,7 @@ export default { :where(.dialtone-playground--fullscreen) & { @media screen and (min-width: 640px) { + inline-size: var(--dt-size-950); max-block-size: 100%; } } diff --git a/packages/combinator/src/components/controls/control_segmented.vue b/packages/combinator/src/components/controls/control_segmented.vue index 00120a9f26..ec5195a555 100644 --- a/packages/combinator/src/components/controls/control_segmented.vue +++ b/packages/combinator/src/components/controls/control_segmented.vue @@ -16,6 +16,7 @@ {{ option.label }} @@ -27,6 +28,7 @@ import { DtSegmentedControl, DtSegmentedControlItem, DtText } from '@dialpad/dialtone-vue'; import { VALUE_UPDATE_EVENT } from '@/src/lib/constants'; +import { resolveTokenValue } from '@/src/lib/tokens'; import { computed } from 'vue'; const props = defineProps({ @@ -46,6 +48,14 @@ const props = defineProps({ type: Function, default: (value) => value.toString(), }, + tokenCategory: { + type: String, + default: undefined, + }, + propValues: { + type: Object, + default: undefined, + }, }); const emit = defineEmits([VALUE_UPDATE_EVENT]); @@ -54,6 +64,9 @@ const options = computed(() => { return props.validValues?.map(v => ({ value: v, label: props.generateLabel(v), + resolved: props.tokenCategory + ? resolveTokenValue(props.tokenCategory, v, props.propValues) + : null, })) ?? []; }); diff --git a/packages/combinator/src/components/controls/control_selection.vue b/packages/combinator/src/components/controls/control_selection.vue index c87393506a..dc97a600f9 100644 --- a/packages/combinator/src/components/controls/control_selection.vue +++ b/packages/combinator/src/components/controls/control_selection.vue @@ -10,7 +10,8 @@