mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
font size slider
This commit is contained in:
parent
2cb821da7f
commit
130253d955
3 changed files with 98 additions and 0 deletions
|
@ -2,6 +2,7 @@ FROM node:18
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json yarn.lock ./
|
COPY package.json yarn.lock ./
|
||||||
|
RUN yarn config set "strict-ssl" false -g
|
||||||
RUN yarn
|
RUN yarn
|
||||||
|
|
||||||
WORKDIR /app/excalidraw-app
|
WORKDIR /app/excalidraw-app
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -666,6 +666,83 @@ export const actionChangeFontSize = register({
|
||||||
PanelComponent: ({ elements, appState, updateData, app }) => (
|
PanelComponent: ({ elements, appState, updateData, app }) => (
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{t("labels.fontSize")}</legend>
|
<legend>{t("labels.fontSize")}</legend>
|
||||||
|
{/* New slider */}
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
className="our-slider"
|
||||||
|
min="16"
|
||||||
|
max="36"
|
||||||
|
step="1"
|
||||||
|
value={
|
||||||
|
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 // 👈 Add this fallback
|
||||||
|
}
|
||||||
|
onChange={(event) => {
|
||||||
|
const fontSize = parseInt(event.target.value, 10);
|
||||||
|
updateData(fontSize);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
{/*
|
||||||
|
<Range
|
||||||
|
elements={elements}
|
||||||
|
appState={appState}
|
||||||
|
updateData={(value) => 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 */}
|
||||||
<ButtonIconSelect
|
<ButtonIconSelect
|
||||||
group="font-size"
|
group="font-size"
|
||||||
options={[
|
options={[
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue