diff --git a/dev.Dockerfile b/dev.Dockerfile index 8a99104d7..7db710225 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -2,6 +2,7 @@ FROM node:18 WORKDIR /app COPY package.json yarn.lock ./ +RUN yarn config set "strict-ssl" false -g RUN yarn WORKDIR /app/excalidraw-app diff --git a/excalidraw-app/index.scss b/excalidraw-app/index.scss index cfaaf9cea..a5314818f 100644 --- a/excalidraw-app/index.scss +++ b/excalidraw-app/index.scss @@ -115,3 +115,23 @@ } } } + +.our-slider { + -webkit-appearance: none; + appearance: none; + width: 100%; + height: 4px; + border-radius: 1rem; + background: var(--color-slider-track); + outline: none; +} + +.our-slider::-webkit-slider-thumb { + -webkit-appearance: none; /* Override default look */ + appearance: none; + width: 16.5px; + height: 16.5px; + border-radius: 100%; + background: #444; + cursor: pointer; +} \ No newline at end of file diff --git a/packages/excalidraw/actions/actionProperties.tsx b/packages/excalidraw/actions/actionProperties.tsx index 5a309b677..6cd57eaed 100644 --- a/packages/excalidraw/actions/actionProperties.tsx +++ b/packages/excalidraw/actions/actionProperties.tsx @@ -666,6 +666,83 @@ export const actionChangeFontSize = register({ PanelComponent: ({ elements, appState, updateData, app }) => (
{t("labels.fontSize")} + {/* New slider */} + { + if (isTextElement(element)) { + return element.fontSize; + } + const boundTextElement = getBoundTextElement( + element, + app.scene.getNonDeletedElementsMap(), + ); + return boundTextElement?.fontSize ?? null; + }, + (element) => + isTextElement(element) || + getBoundTextElement( + element, + app.scene.getNonDeletedElementsMap(), + ) !== null, + (hasSelection) => + hasSelection + ? null + : appState.currentItemFontSize || DEFAULT_FONT_SIZE, + ) ?? DEFAULT_FONT_SIZE // 👈 Add this fallback + } + onChange={(event) => { + const fontSize = parseInt(event.target.value, 10); + updateData(fontSize); + }} + /> +{/* + updateData(Number(value))} + getValue={() => + getFormValue( + elements, + appState, + (element) => { + if (isTextElement(element)) { + return element.fontSize; + } + const boundTextElement = getBoundTextElement( + element, + app.scene.getNonDeletedElementsMap(), + ); + return boundTextElement?.fontSize ?? null; + }, + (element) => + isTextElement(element) || + getBoundTextElement( + element, + app.scene.getNonDeletedElementsMap(), + ) !== null, + (hasSelection) => + hasSelection + ? null + : appState.currentItemFontSize || DEFAULT_FONT_SIZE, + ) ?? DEFAULT_FONT_SIZE + } + label={t("labels.fontSize")} + min={12} + max={64} + step={1} + testId="font-size" + /> */} + + {/* Old buttons */}