From b3039c1cc35340f73ad08ad0053f87c99906c40e Mon Sep 17 00:00:00 2001 From: Jannis Leifeld Date: Tue, 7 Jan 2025 13:14:25 +0100 Subject: [PATCH] NEXT-38863 - implement new text editor component (#377) * NEXT-38863 - implement new text editor component * Refactor translations to native i18n plugin * NEXT-38863 - fix pipeline jobs * Apply code formatting and fixable ESLint issues * Apply code formatting and fixable ESLint issues * Apply code formatting and fixable ESLint issues * NEXT-38863 - add properties disabled, placeholder, label and error * Apply code formatting and fixable ESLint issues * NEXT-38863 - update snapshots and changelog --------- Co-authored-by: jleifeld --- .changeset/wise-melons-smash.md | 11 + .../component-library/.storybook/preview.ts | 1 + ...-open-colorpicker-with-apply-mode-snap.png | Bin 0 -> 44080 bytes ...tor--visual-test-render-code-view-snap.png | Bin 0 -> 16575 bytes ...isual-test-render-disabled-editor-snap.png | Bin 0 -> 21129 bytes ...ender-editor-inline-mode-selected-snap.png | Bin 0 -> 12545 bytes ...al-test-render-editor-inline-mode-snap.png | Bin 0 -> 17756 bytes ...editor--visual-test-render-editor-snap.png | Bin 0 -> 18947 bytes ...-editor--visual-test-render-error-snap.png | Bin 0 -> 21895 bytes ...r--visual-test-render-placeholder-snap.png | Bin 0 -> 12142 bytes ...sual-test-show-contextual-buttons-snap.png | Bin 0 -> 16988 bytes packages/component-library/package.json | 27 +- .../_internal/mt-base-field/mt-base-field.vue | 4 + .../components/form/mt-button/mt-button.vue | 1 + .../mt-colorpicker.interactive.stories.ts | 183 +++ .../mt-colorpicker/mt-colorpicker.stories.ts | 20 +- .../form/mt-colorpicker/mt-colorpicker.vue | 137 ++- .../form/mt-number-field/mt-number-field.vue | 4 +- .../mt-text-editor-toolbar-button-color.vue | 85 ++ .../mt-text-editor-toolbar-button-link.vue | 142 +++ .../mt-text-editor-toolbar-button-table.vue | 229 ++++ .../mt-text-editor-toolbar-button.vue | 91 ++ .../_internal/mt-text-editor-toolbar.vue | 483 ++++++++ .../mt-text-editor.interactive.stories.ts | 836 ++++++++++++++ .../form/mt-text-editor/mt-text-editor.mdx | 445 ++++++++ .../mt-text-editor/mt-text-editor.stories.ts | 81 ++ .../form/mt-text-editor/mt-text-editor.vue | 690 +++++++++++ .../form/mt-text-field/mt-text-field.vue | 9 +- .../mt-modal/mt-modal.interactive.stories.ts | 2 +- .../mt-popover-item/mt-popover-item.vue | 4 +- .../mt-data-table/mt-data-table.vue | 11 +- .../mt-data-table-settings.vue | 2 +- packages/component-library/src/index.ts | 4 + pnpm-lock.yaml | 1013 ++++++++++++++++- 34 files changed, 4455 insertions(+), 60 deletions(-) create mode 100644 .changeset/wise-melons-smash.md create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-colorpicker--visual-test-open-colorpicker-with-apply-mode-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-code-view-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-disabled-editor-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-inline-mode-selected-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-inline-mode-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-error-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-placeholder-snap.png create mode 100644 packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-show-contextual-buttons-snap.png create mode 100644 packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-color.vue create mode 100644 packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-link.vue create mode 100644 packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-table.vue create mode 100644 packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button.vue create mode 100644 packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar.vue create mode 100644 packages/component-library/src/components/form/mt-text-editor/mt-text-editor.interactive.stories.ts create mode 100644 packages/component-library/src/components/form/mt-text-editor/mt-text-editor.mdx create mode 100644 packages/component-library/src/components/form/mt-text-editor/mt-text-editor.stories.ts create mode 100644 packages/component-library/src/components/form/mt-text-editor/mt-text-editor.vue diff --git a/.changeset/wise-melons-smash.md b/.changeset/wise-melons-smash.md new file mode 100644 index 000000000..a7400e456 --- /dev/null +++ b/.changeset/wise-melons-smash.md @@ -0,0 +1,11 @@ +--- +"@shopware-ag/meteor-component-library": major +--- + +# Add new Text Editor component + +This change introduces a new Text Editor component to the Meteor Component Library. + +# Updated i18n configuration + +We change the 'legacy' mode of i18n to 'false' in the Meteor Component Library configuration to use the new i18n composable. \ No newline at end of file diff --git a/packages/component-library/.storybook/preview.ts b/packages/component-library/.storybook/preview.ts index 65203d77a..0457e4741 100644 --- a/packages/component-library/.storybook/preview.ts +++ b/packages/component-library/.storybook/preview.ts @@ -18,6 +18,7 @@ import "@shopware-ag/meteor-tokens/administration/dark.css"; const i18n = createI18n({ // something vue-i18n options here ... + legacy: false, globalInjection: true, locale: "en", fallbackLocale: "en", diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-colorpicker--visual-test-open-colorpicker-with-apply-mode-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-colorpicker--visual-test-open-colorpicker-with-apply-mode-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..78ed6fa6b4132e6dbc52f2573b46c80662cc98b0 GIT binary patch literal 44080 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 literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-disabled-editor-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-disabled-editor-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..902e0868ccc4c2348d0ac0c5468ce11318df4934 GIT binary patch literal 21129 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 literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-inline-mode-selected-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-inline-mode-selected-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..0a71126af218b4cd9c6861e99b2d80f459aead79 GIT binary patch literal 12545 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 literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-inline-mode-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-inline-mode-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..b6357bba110917f2fc92c40a27c5301ba9e78940 GIT binary patch literal 17756 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 literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-editor-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a93624b40cea627b70cf8e4ef9e81d4549eba4 GIT binary patch literal 18947 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 literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-error-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-error-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..d799116058dd0f68d7a6c0653e9fc6eb5152d48a GIT binary patch literal 21895 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 CG`2VZ literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-placeholder-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-render-placeholder-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..9cfbcc989c86318251bab35fc099e9327f2525f3 GIT binary patch literal 12142 zcmeI2c~H|=|Lb3QH6V;dym}7jchk zRrOw*LOr4%JvvnNaKs~M?=L@|_WF9=J%}C^;nvcd7xcB$NrFt#Ze%ShQ53~)nZhj< zMQ6XLsMraCP(I(2$-aU>27b6?1o`dz|A&`T+{L1xo?PQyyMlrfCa2YAe$L)6&whO6 z=XU&fN4fSXPtUp#kGFj?QYh`PscD6_Uma|l+1~eEU2g8~uzmji4T&NrhP6Ej>>s=wnD~D=x>p^7q7mv za7XAleC&Zy@8#zwz5nUxg55sIn_$O)%ZgHyadMJa+)uqS;)8UasEK6M8xx97DK;Ij zut4JWASl@G=fVE*W4p?;4!?@pA)Y$Qj*Zos$m6**@CIEd)^oNZKBuH`{1w`IObde9 zKeS(=4R4^gbs7(UpoG%ONFg7|WU`%lsiQE;Mshz}OUF>B)#w;J$!Z)*dbyjGp^!0bdQ7FS3c4BBvt ziVIc=nG^Mq46qox3=OQKFyhO-;WjIG^fct9Zlie2J(&!ce}hn8-gZ%yU@+9%~Rhz(1rG-R^;R;!M?i;Jy{ zOx&ugHNZPAOl}79AePP4q}h; z;=>}5lS&~=cfb9>8pRX}$*M=G>hEE{uHK=+JQk1K^JF;r(dKMxuZmBD&PG8BP zt_-_c2O7yH-rqIOu#?xK@Z3WCI-CFnw zBm#V)wpH8qYHD;z;>`2z?rw#k#ni^eCarYn{(Xf2znDOpB%gb$)sN7;JMFG+IbELV zp&KV;susd4C#M@7jj*5g7-#WDS{Tnf%8z@TIeBvN^W!X6wSsM9Gv=YY(dgiE^F<1N zJhZ&c;ZX9j9;>0MeoH49x6%tIzgKHW{~w?{};*jcELr4ErP0k1DOczAdmIWj%d?lOZuVBu%x-|);a%h1Qi z$2%~3%+os{z{kf%F3g5UKKa}t3nm6M$G^LATa>qJSK&5u{~sJaPBe;FrTi_{NL`1{ zkqfy3)mZHR{<}40WABF#MF{-czkj;^*kpl0a*qt$4taw+BjZX9Fjt6hY_fa)(uvT} zdEoJAW@E6h>WyA`R>7)r!|?F%+TMP)I6fRRT3Wi%L)XlYqI~?+g^e&SNyIcu`D{mp zOi04W)7InExwfxE&tXL|-CehX`AY{Z zv8&61zjNYxhc71lP@W*XZVZP%fAL~(WsAd?UwV3aHcvcgt5U5>UdiwG7FxpsnqH!e zvN4c1oDMkFx$`|aJ1yOsnZ%jo2rP%84jyi9@hmtNhnK3=@~oEG}c{QP`*(Sao> zRVi7OIC$u`9A?*D%(Rc@H^q7A+AHafJ>A{r&CB-)>SbeV=GE|MQOC+2gTq%7ImHR! zt@s}nfHlz6`|S~U-=Lt`IWs@=7G5_?CCD^M`)cF%`}glF70rS@rlx+)QInCR$=5x- z+<`}}ys=nkXJ?QKw6yjAzI!(sj21a|s_A@d3R1Od4Yr&=(MV(B`ymi%7PgzR+qD2A z?+Nzu_H5_a^CFf%Ta3K)u>kgqw&D@-l5`L_N}@aRGJl9(uA{4$3Mx7;*P*B}v%r1O zQ{#ky$tOtrT34siZR`pin}@>cK2GVq!fjbe)Ol;o%*rA z`}&TzLxC}Ri066*jfy@W3nXH0bj$IK!?DYH<)nzlbhdWCt*~gg!rLfrS(LtQt7YW) zvRWa)30q`Yh@XV_Pxp`dQY4uS)MN$pOGp)dc=q(+FkzQ*`H94cnYK>D=dH07FJ6og zk;opMF!0-6GqcG_pPlXP?Rt88w)ji_(b3WA+srmYi^rb279OmN7&{mgtN_3tjf2bk0SeSPZ}*mZ>mBZ1|GU32{ca*hs? zm0x`Xv+=Z7&1F}av=NPMoEsdh)`6OLb7?Ayovc zQ_@)u2fA(T!CU&6?bhAX(^J8C??;OCt55C~z%NubH8rg=9S^#q?UQ*@>>jF8sSKqp zB{ak$4>lj*OV)0{>7dBIUGG5P=EgpYCq23$M?2Bf1ICxlI{_p^+SO2j?^Dd+o z_Wy)nD9xm&!&NpxxV7U{QUgvY}$aSZ+(Q1u0uvu>2cZ* zW2DsGqX}H=T;BA>n}w?AnAKQ|`jYso9?8CWtATOK((R?n?eF^h{IVF-RD!TJRIX@9 zYlD3!IwY6NZ<7{Rh$HaaS;Gz@6s=aU2B>yJ^t~M!JG{k=Q$luU{2#T+dPzFHvaaoq z_g}nZgo*l4Y)g9bW8?cVvV=Bwe!)xx-_e7liRfD@sk8 z@TP1Jp??o^6H2i44q| znh2%MINj=ZJlTPmXzPDH*Kb|&2g5Nb$r#M)*GOMnmLW*s_M7p=oAGth*ZX9@!e1x5 zPfzYKS#kf1Gbc6Kx9^tbHlMA$V0Uf?8P!WAi1ISTgV&PphEO{4|K!q%NODJGEN8?; zzDo+*s;j$OFecM{4kL;(`QZ<5g#wG1iFW|8Y;bTzDs47&D>={-w){;O%a-V{{-w3{ z+myuCTbjL}=H^Be?>7b~ASROKkHCFz?fel0!KkS7y~v;34)1}LfYC%;hrqz=ngdYH z=6hf-t*xyCy<3Qu>TSCy5f7m`d3n&zg!AW*LUDsyn{48(DMTs;JhNKxM&ma@TVp&}OSu?BSQtVR6_>ZvXb2j>gE-v1$ z{0O6@!WgeW1>xWsIK9Vi#C(@}ujRnXMzj4{r?O_gX>5Rmjae;?Y;hgml)CEnAEw4Y}_2 z@v$u9{+L*F+ZOc3T1DNFPSj`dpEIm2o6#-o0OrQ4ynx?TnVPQYgrwVZic8Ca0G;iMSgH!Fw_1;TeC z{>sK@4ej}z^?tkV9074ndPRjRiO2O@5XLNT_W zpp3$Y^g4AP6KCjI>{jP(m9f;!<5M+1YgZ@cg=5^^+}w(;H5WduXi2=mc&s8nmq;;Bd@YFFB{dA?k@SB;MuyS1>0f< zi911=OmQvTlGV|v944+r5^=JwgA;On;6YIod2ZskRml;X`6plH-!!n5zDUNKW*Fl( z$Fe1G&&KAp$kmzI@?tuZ{SqpQNWS3ymcxD1cH`LM+VZ>>?u5bm&lpwJ6crT}L~rw+ zq96x@IG7VBb_tqSBCSQo3019qtQ2XZ=6Fp=kKLaoX?K|2{h0zMJdVCRx8ObVYc&W9iS^aEe!)cRiX`UG2geUdqdDc)%dfFk^y)0O zao-a|Fxxf}hQPvox!uRfscUJrhij^snd}@J8`~KD=YzGt5Lb&raQn)&&=jHy@x zw)en+7eeeWOj4n;MJ%lvrM%qbk!ah0ahQF>XJ#Qpg7Xi)j!Wy%Hg%qOMm!&05_}TN9*nkTOI&6B+mlr6IFtti=ZJ|)rD}PYhw%!HSJj6!9Z#jf`L&OATaWl#NbvE=r z8|Oc`)qnbt=NVO*prC+jlpC5cAp=u?Uf0?faU*htmne`!$4TJ{pC7fx<3g6Uxc3&@ z3JWTT&Q4BaMulHNFn6swB9NzIPIVjSn)^xBJe%9F>}<*uEhBv7rJTRfnuw&rqx%6{ zKmb{64h5BaPVuCbjeLXJejP-b-tmCn6UI_2#nkPr63fsfrF_F?ByKvA75Mr>dpCdU z);gb+XOEBT#|_;|VVOXFJeF}6i#{0`2*)W2Zg!#-pmaKAXFNUaR|bqyHyRv>7##qr z{_N`uv(cRfV!#((`8Au990k*<2IEg%IBhgK5thvE#haa7Jd&KeT6I2EKmPM#K;_fw z>I3-k<(o$4C!C#upz6Q1DK+@gCCq_$tJcgFx|Wf71g$BKMZu=%7!};VuZ!wvk->jm z{XpaNYtAvra)1jA@)J%er2I0sUSvZE&=pb-$IQo0P>ZjEV+bsCf^%3W2Ws;6sF>MjsTSr+{d+3?2L>t#s{c zReyR+#7QPrq-k4Cv+R~`&C`&9jbWbg@pPJ-{Zr414{Zsdb06rOzCv#=FL>g>n~90_ zgye{n5-Ua`ErC z=}=fByRVsE=?8`RREN?G5}5XQ^_gS9>MaTcM~s zrO$xSzy6iZozjrShexh!>7-phkXG96l4~dCi6@)mxI@p`6&8VtRwIo*iwe}xyY}=g zq~QJ%abBuX=ww+OD4B#51v4Ol<>%w0hgc<15u)4rsrNg|3sXC;b-*@PnM)b)jh zg|AjNt%D%HS0vQ~BG9V610FrY0#z?tuYttGajvazN>~`(kGtAiP>0m4YHVZLHhJh4 zUs1kJn246$_$CV(EtfquDfspLh4M@Tibl0xqzi08Yt3e};H&RnO8McL$UsV*lxM?I z&fRQHG2HC%@!^s6bN$GZK0ZJjFMYmo8;DtrC=2&J;rIO^Q`gYK9dt0w>)H#O5G1T3 zp4G6ZG)Y^Pa${RJl0IDu#><*nX{8~*Y1DMpT*}Q28&b3lsw2jh$_Y4Wx2gGB_%lh% zw3j|$2v=11%L$E(e-RUeBW6~+;yUi&4Y42Y-uBjY_z0?AJdSUrr#BCn%ICi&pH91@ z81-f)ixr_j4%0K`p?1w+C_@=yaiBY=A||F9YPL6VHb*ZnaJ7YkO?LFS%6sj|x=M@O zsJZ?H1kRFb;BSwne3w}YpvPrLk24+~azV4u05|&Rw&Us3r?U6&oe15u#uh}*}|j8BY?j)#m`qid-$tpf`VObv#xHAcXe`_r^yiLQd{71)j>V?Tz3HmvezVp zUKvTR44CO1t&a?+Qn0!E1pI0APV3cpBl!;tK$dI`KXVXyplEVcp%H zpsM#JCpx8S`(P1cW=tTgkLoZa%t*+!8!7}N@9y3GAp>vL45g|yrN7V`uaHI_O*Ooi zSPS;eD$BcP;cw4CO5L-NqafEMCCQP7xJ#)Yfk%?Wd(BrnzI2C6mU~IcN{94qsYVBt zPsm#={Ob4Z-3#O~fAsay-d(owyef=*sVy(mbubL>D{k8BM3^{B!L*OpadFD*iUiW9 zz5=Vr+=k+k5<>@%Acxt$bgRg5%V=9GD=QnDUCgfLnBf;MU%o7GsYlV{bt=|FR!&?3 zQh)7sfB;O8lY0D6R2mhpnd{Z~IRNJ#@{hR~?GzIebNO=5O3wz^N-_(F4Kx4yZV5%a z0=QZpGQMj(jtf^_nO>fUQ6*Aax@OMX%&-20lhdBD+Ih_#5?-LMUA1ojz>l;B+Yo()$})9T}|Z zAhGs!6oaCI=^&OqWuFGzs?t{?N|$T?aB<-dHpc2Y0AzJIc8&|99D4QaS;+J|2X?0h z1=iy$?ax&29V`+`D41-XL<`pg8WS;g>Tq!11dA0Xbb(Q~BMNeIa&mJIiU~EjW`63> zox@%Prj}96`@ew*M~FV%*RxP3(I;hAs!z$59=g4S)G2SOI&vm$KsIS@{@N6?Fa$-B z=SN=okw)mCkRj|O+%6`Ia7^$$j6k+F$V>}o)b~0W7cahP5CL=_PAijmQIWbL@PCcD+>;9}($oc)VAV!6WMyTg0PwM`-WUY@ z@rB<(9TZt41;NNVbnw$upgmxO6}AMA=3oHH^DshN9ZlRjm5$vRFR$E!f|wzY zh~XE{C_@0kO5&8*&!e)DxS)<#q=^AgmtYle0QrEx#IoNJsmp_=VkqY1*{VcP1o0Vl z*u_VPj;yFLau6VJPoF*&9h+J$Eq%qPZ`X-5F*n~ke$vC^E~O%18uA9}H^>a+@rx5U zh6kP?TTq>#O#!$fim0A<2Z3=*f?NL52cAtVKE8Jp@S2&K3=l`gW@7t!`ME<~ zk~kN%cnY+%cLPXh89riX6-R)7Ljs5i+#KNfF?m53FyWw}Aju%6dHG#BEf5nu9!X+8 zXc)PAVFwuW-o1O9^S--7^r!t+xDH}jaQK%oHLJ@Hw4>GMWTl>t_qb}qlCa)L3(94(S;0KZ9yP%q3%yKUMVr)#mD2@c>P09{bl18P`&uNIh z*mXybD1kS4m-54+j)D*{qjtA%{{gb{1w&(-q}i`}YFzSQt-mz(l*M2%mgEDa4(V^N zf0c>8f>Fft2Wd3#m;Pg*7K33!m(@&j$dpB-M)=7LEG0SmVm#fvdF4S`9rs`)vj|L9 z($ECE1N^)_JuhPP6kVeh0=CPg-wnT7mWQQUt({(aKyw z9d7fnL5CYNBUpou%KN;u$ z=l|XqI&25pGn|9}N5R{p4Tm6pUqF6~1bw~`6ybs~?EmV(!NO8L83Ku`4;ANnBhltnCzr%WWfP-K zo|knU>|>f$f=bbPg)EBJG^}RUwt$dKyZ5w5CiCK1ffctb2`*E!UCOiW6apbs({Cr4 zb|fT5j`#%^CC~J2$jixb@5Rq%kkl=4jQT%S3XE#PqR`UG#jYtr{^E8v!RJiXr#Au{ zj)n@0;}7nkfKr&>Z->Bke85NU8yjlzqZ3Q)n>a_bj(ME%@sVeTqgMMII4ZG(gv5&{ zQFu1FRmY&Z`R2t~4*rlT$49(v-v_~<{0_}cf0UY_>majVrgy5PS9Ki_0|_(Z{yKp_TQ8*PKbAwzqNEm0%2(^OeJKsgyt zU%tdlu5LV<`rRKB*(J;;cxqrzE^$0*8l+ex^9tv2cA5Tt^lvPtJ)!upYRO3R;ziS8 zT|p z8qxsvkyqSg6lfj(33d#W^Zy z;SW(0NJW(%x(4W>N7uEat`Q6DYyv;-q~NFP3WR3H)H_hZ1(Th8wG5@R)XTA&Lzhlc zr&GVfEQ~2xlU5WDit4fga;>8p)86T!TNln~nk$ZE)CSgHfR4#zUXg+cxP@;-Rp9I6lO#DJzWqLbPtQ0$DheT9CYzc!f_8r_1v4I* zU~g%q$$9Mf9Ri$lsPH0US6&E}SREacChe|gizsELzOAL-l4_P3ntgq=W3hVFLq z$)L?volm5y#Du`;ndqIRCWph?7V#~rKnI7QurTMNIN{F!GG6d8leED>wL1>jq^X%1 zBWW5>MF^j5YGu!*mp((2Dzgw6_nD8G2IHM;t$IY-*r%1g zSXhv7)8W2NKesq#&zfoq!MO$azG$@02B^7@*Qx6H3E~~+eM+_|rKXuK5sryd4Gyef z722Gchc2LOwX(PNbNG{gzo!(KMvl~m%Ax|w?Fw0SE}hJl)=uQsNqQfU(##lKibw?IIOG=1z?B2Rm3MTlQefb z2?e&OY0%I+oUm{*ARxfgv-oWF+{ZuBXA?c%-n+BB>}F6MCT@cJ*RHUK!wGm1fUmoE zsbnXc47^rrD$IAtIvuHKxz#Jbpc2gBexz;i)xv`r(Z|z4PjtIebA4pN!Cn)8vgLjc zXn#eq&B9bM;CjPR{HD^DfObb0Z{?@)LbonkDVnvqx^A+XMk~Z{sw=ovSG*MQYiC2o z$xnmQ=Lk)MFQt(>dPArW?Z}Fx;IQ#1(+c_#Ewvzp@ak;c>Lk9uc)6{HhRnB_pGIeA z?@->^P<|Bx$p}72W%hG430^#v%?7VZU;BqhVR4>aL$H7$>|+Ls2sY&E>Lo4p;`?`h z?Lr&k)u~@PIepZDHLpySG|tbv)_b4X7eJ}j-e5E#egg__Ityd{dNI6)S@3J9Gsbq$ zp64^!UG0f5@k~}ODXe&`%(Y^r-_Wb+X)TXHq=MBPu8ZxYx!X^Vzs@5Dcw1_&JD_m^ zlHaB4AQ_z0JbXCwF9#A!mHMvTC72@WBStldUCKEUE-jX`tKWuOJ9E#~dLkJ$J@eEh z*PJTPjLt464?Jg=^Wyll3P%Tr*&9yoP}Dvj@})6YCH3)T!Z2=nn^^&#U-Xg0vR6O# z4t@n2Uj*^pKY-J#QOoU;c7i zY@TMtTiEYY)sqv&XySJ;1kHHm&T#rxGoL2RyC-{G3!WGx{?^CDK)LVT0zq22Dj1rE zB3fo%Q|+;$UEXzJ#YxMzrt>fgWq|qE^P?lZ^o*9^2_z+M-rdyHw0ZVw3wH#GTQH{! zCYu7~Dijl;CbBhl`)zFGe-Uv>s?|xs9;Wymt7WBPYfetWq=qAL*l}Qx=2#q~B$?Y; z<3dhqn8BId&5}MXFq&N4ux7tkxDszxoJNC_RacO_&s?gH5Ir`fU_VVCO=uiE80o88 zcFa@GPdjC~%2mjk>M^|nT6QXIFw`$cy_yB8%c z+^K6$+lL=ka~H4zXJ@zWh_TXx8-x)+d#8RkPx5wO%d9-DIvdZQy;9w){s6Ekck(G^ zn_%>j%3PR*NPS!e{O`_7cb(qRz?%^*S0eu1$wbf>s5>;g9da$@6zK;Bm$%kBaoX<) zI`AyeYopm^pjhghOM2vO!6~kxQw-ZFmEvhT^CTY$tJziLHJUCJSBqmzn4}mP~ zv$1Im>X`!rSuqqku;(to!WSFapT2`!`|&;epUXdM@Q)q*;|BkPg8#RXP>FZ>&hYkq UR+JDNpocg)xE-tf{oG&w3%gA)`~Uy| literal 0 HcmV?d00001 diff --git a/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-show-contextual-buttons-snap.png b/packages/component-library/__snapshots__/interaction-tests-form-mt-text-editor--visual-test-show-contextual-buttons-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..14d4b199bcff4bebf31d94bcd72b6d1c06376c79 GIT binary patch literal 16988 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 3.5.0" } } diff --git a/packages/component-library/src/components/form/_internal/mt-base-field/mt-base-field.vue b/packages/component-library/src/components/form/_internal/mt-base-field/mt-base-field.vue index 3afc57f8f..4954149a3 100644 --- a/packages/component-library/src/components/form/_internal/mt-base-field/mt-base-field.vue +++ b/packages/component-library/src/components/form/_internal/mt-base-field/mt-base-field.vue @@ -262,6 +262,10 @@ $mt-field-transition: margin-bottom: var(--scale-size-12); } + &.is--disabled { + cursor: not-allowed; + } + &__hint-wrapper { display: flex; justify-content: space-between; diff --git a/packages/component-library/src/components/form/mt-button/mt-button.vue b/packages/component-library/src/components/form/mt-button/mt-button.vue index 40b5e20e8..387176b56 100644 --- a/packages/component-library/src/components/form/mt-button/mt-button.vue +++ b/packages/component-library/src/components/form/mt-button/mt-button.vue @@ -289,6 +289,7 @@ const isInsideTooltip = useIsInsideTooltip(); width: 100%; display: flex; justify-content: center; + align-items: center; } .mt-button--x-small { diff --git a/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.interactive.stories.ts b/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.interactive.stories.ts index 55ec41309..13689e799 100644 --- a/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.interactive.stories.ts +++ b/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.interactive.stories.ts @@ -2,6 +2,7 @@ import { within, userEvent, fireEvent } from "@storybook/test"; import { expect } from "@storybook/test"; import meta, { type MtColorpickerMeta, type MtColorpickerStory } from "./mt-colorpicker.stories"; +import { waitUntil } from "@/_internal/test-helper"; export default { ...meta, @@ -56,6 +57,188 @@ export const VisualTestOpenColorpicker: MtColorpickerStory = { }, }; +export const VisualTestOpenColorpickerWithApplyMode: MtColorpickerStory = { + name: "Open colorpicker with apply mode", + args: { + modelValue: "rgba(72, 228, 37, 0.81)", + applyMode: true, + colorOutput: "rgb", + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + const pickerToggle = canvas.getByLabelText("colorpicker-toggle"); + + await userEvent.click(pickerToggle); + + // Look inside the popover + const popover = within( + document.getElementsByClassName("mt-floating-ui__content")[0] as HTMLElement, + ); + + const colorRange = popover.getByLabelText("colorpicker-color-range") as HTMLInputElement; + const alphaRange = popover.getByLabelText("colorpicker-alpha-range") as HTMLInputElement; + const hexInput = popover.getByLabelText("hex-value") as HTMLInputElement; + const redInput = popover.getByLabelText("red-value") as HTMLInputElement; + const greenInput = popover.getByLabelText("green-value") as HTMLInputElement; + const blueInput = popover.getByLabelText("blue-value") as HTMLInputElement; + const alphaInput = popover.getByLabelText("alpha-value") as HTMLInputElement; + + expect(colorRange).toBeDefined(); + expect(colorRange.value).toEqual("109"); + expect(alphaRange).toBeDefined(); + expect(alphaRange.value).toEqual("0.81"); + + expect(hexInput).toBeDefined(); + expect(hexInput.value).toEqual("#48e425cf"); + expect(redInput).toBeDefined(); + expect(redInput.value).toEqual("72"); + expect(greenInput).toBeDefined(); + expect(greenInput.value).toEqual("228"); + expect(blueInput).toBeDefined(); + expect(blueInput.value).toEqual("37"); + expect(alphaInput).toBeDefined(); + expect(alphaInput.value).toEqual("81"); + + // Check for apply button + const applyButton = popover.getByLabelText("colorpicker-apply-color") as HTMLButtonElement; + expect(applyButton).toBeDefined(); + }, +}; + +export const TestOpenColorpickerWithApplyMode: MtColorpickerStory = { + name: "Use colorpicker with apply mode", + args: { + modelValue: "rgba(72, 228, 37, 0.81)", + applyMode: true, + colorOutput: "rgb", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + const pickerToggle = canvas.getByLabelText("colorpicker-toggle"); + + await userEvent.click(pickerToggle); + + // Look inside the popover + const popover = within( + document.getElementsByClassName("mt-floating-ui__content")[0] as HTMLElement, + ); + + const colorRange = popover.getByLabelText("colorpicker-color-range") as HTMLInputElement; + const alphaRange = popover.getByLabelText("colorpicker-alpha-range") as HTMLInputElement; + const hexInput = popover.getByLabelText("hex-value") as HTMLInputElement; + const redInput = popover.getByLabelText("red-value") as HTMLInputElement; + const greenInput = popover.getByLabelText("green-value") as HTMLInputElement; + const blueInput = popover.getByLabelText("blue-value") as HTMLInputElement; + const alphaInput = popover.getByLabelText("alpha-value") as HTMLInputElement; + + expect(colorRange).toBeDefined(); + expect(colorRange.value).toEqual("109"); + expect(alphaRange).toBeDefined(); + expect(alphaRange.value).toEqual("0.81"); + + expect(hexInput).toBeDefined(); + expect(hexInput.value).toEqual("#48e425cf"); + expect(redInput).toBeDefined(); + expect(redInput.value).toEqual("72"); + expect(greenInput).toBeDefined(); + expect(greenInput.value).toEqual("228"); + expect(blueInput).toBeDefined(); + expect(blueInput.value).toEqual("37"); + expect(alphaInput).toBeDefined(); + expect(alphaInput.value).toEqual("81"); + + // Check for apply button + const applyButton = popover.getByLabelText("colorpicker-apply-color") as HTMLButtonElement; + expect(applyButton).toBeDefined(); + + // Change colors + fireEvent.input(colorRange, { target: { value: 300 } }); + fireEvent.input(alphaRange, { target: { value: 0.5 } }); + + // Apply changes + await userEvent.click(applyButton); + + // Wait until the popover is closed + await waitUntil(() => { + return document.getElementsByClassName("mt-floating-ui__content").length === 0; + }); + + // Check if the color is applied + expect(args.updateModelValue).toHaveBeenCalledWith("rgba(228, 37, 228, 0.5)"); + }, +}; + +export const ResetsColorInApplyMode: MtColorpickerStory = { + name: "Resets color in apply mode when closed without applying", + args: { + modelValue: "rgba(72, 228, 37, 0.81)", + applyMode: true, + colorOutput: "rgb", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + const pickerToggle = canvas.getByLabelText("colorpicker-toggle"); + + await userEvent.click(pickerToggle); + + // Look inside the popover + const popover = within( + document.getElementsByClassName("mt-floating-ui__content")[0] as HTMLElement, + ); + + const colorRange = popover.getByLabelText("colorpicker-color-range") as HTMLInputElement; + const alphaRange = popover.getByLabelText("colorpicker-alpha-range") as HTMLInputElement; + const hexInput = popover.getByLabelText("hex-value") as HTMLInputElement; + const redInput = popover.getByLabelText("red-value") as HTMLInputElement; + const greenInput = popover.getByLabelText("green-value") as HTMLInputElement; + const blueInput = popover.getByLabelText("blue-value") as HTMLInputElement; + const alphaInput = popover.getByLabelText("alpha-value") as HTMLInputElement; + + expect(colorRange).toBeDefined(); + expect(colorRange.value).toEqual("109"); + expect(alphaRange).toBeDefined(); + expect(alphaRange.value).toEqual("0.81"); + + expect(hexInput).toBeDefined(); + expect(hexInput.value).toEqual("#48e425cf"); + expect(redInput).toBeDefined(); + expect(redInput.value).toEqual("72"); + expect(greenInput).toBeDefined(); + expect(greenInput.value).toEqual("228"); + expect(blueInput).toBeDefined(); + expect(blueInput.value).toEqual("37"); + expect(alphaInput).toBeDefined(); + expect(alphaInput.value).toEqual("81"); + + // Check for apply button + const applyButton = popover.getByLabelText("colorpicker-apply-color") as HTMLButtonElement; + expect(applyButton).toBeDefined(); + + // Change colors + fireEvent.input(colorRange, { target: { value: 300 } }); + fireEvent.input(alphaRange, { target: { value: 0.5 } }); + + const colorpickerInputField = canvas.getByLabelText( + "colorpicker-color-value", + ) as HTMLInputElement; + + // Close popover without applying + await userEvent.click(colorpickerInputField); + + // Wait until the popover is closed + await waitUntil(() => { + return document.getElementsByClassName("mt-floating-ui__content").length === 0; + }); + + // Check if the color is resetted + expect(args.updateModelValue).not.toHaveBeenCalled(); + expect(colorpickerInputField.value).toEqual("rgba(72, 228, 37, 0.81)"); + }, +}; + export const VisualTestChangeColorpickerColor: MtColorpickerStory = { name: "Change colorpicker color", args: { diff --git a/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.stories.ts b/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.stories.ts index f9aaafdb1..4cee3c915 100644 --- a/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.stories.ts +++ b/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.stories.ts @@ -1,18 +1,32 @@ import MtColorpicker from "./mt-colorpicker.vue"; import type { StoryObj } from "@storybook/vue3"; import type { SlottedMeta } from "@/_internal/story-helper"; +import { ref } from "vue"; +import { fn } from "@storybook/test"; -export type MtColorpickerMeta = SlottedMeta; +export type MtColorpickerMeta = SlottedMeta; export default { title: "Components/Form/mt-colorpicker", component: MtColorpicker, render: (args) => ({ components: { MtColorpicker }, - template: '', + template: ``, setup: () => { + const currentModelValue = ref(args.modelValue); + const onUpdateModelValue = (value: string) => { + currentModelValue.value = value; + args.updateModelValue(value); + }; + return { args, + currentModelValue, + onUpdateModelValue, }; }, }), @@ -30,6 +44,8 @@ export default { isInherited: false, isInheritanceField: false, disableInheritanceToggle: false, + compact: false, + updateModelValue: fn(), }, } as MtColorpickerMeta; diff --git a/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.vue b/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.vue index c247c0e87..ff09b1269 100644 --- a/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.vue +++ b/packages/component-library/src/components/form/mt-colorpicker/mt-colorpicker.vue @@ -1,6 +1,6 @@ @@ -215,14 +226,39 @@ import { debounce } from "lodash-es"; import MtBaseField from "../_internal/mt-base-field/mt-base-field.vue"; import MtFloatingUi from "../../_internal/mt-floating-ui/mt-floating-ui.vue"; import MtText from "@/components/content/mt-text/mt-text.vue"; +import MtButton from "@/components/form/mt-button/mt-button.vue"; +import mtFieldError from "../_internal/mt-field-error/mt-field-error.vue"; +import { useI18n } from "@/composables/useI18n"; export default defineComponent({ name: "MtColorpicker", + setup() { + const { t } = useI18n({ + messages: { + en: { + "mt-colorpicker": { + apply: "Apply", + }, + }, + de: { + "mt-colorpicker": { + apply: "Anwenden", + }, + }, + }, + }); + return { + t, + }; + }, + components: { "mt-base-field": MtBaseField, "mt-text": MtText, "mt-floating-ui": MtFloatingUi, + "mt-button": MtButton, + "mt-field-error": mtFieldError, }, props: { @@ -360,6 +396,24 @@ export default defineComponent({ required: false, default: null, }, + + /** + * Show the colorpicker in a compact mode + */ + compact: { + type: Boolean, + required: false, + default: false, + }, + + /** + * Use apply-mode to apply the color value on button click + */ + applyMode: { + type: Boolean, + required: false, + default: false, + }, }, data(): { @@ -636,10 +690,20 @@ export default defineComponent({ left: this.selectorPositionX, }; }, + + componentClasses(): { + "mt-colorpicker": boolean; + "mt-colorpicker--compact": boolean; + } { + return { + "mt-colorpicker": true, + "mt-colorpicker--compact": this.compact, + }; + }, }, watch: { - value() { + modelValue() { this.colorValue = this.modelValue; }, @@ -647,7 +711,14 @@ export default defineComponent({ this.colorValue = this.convertedValue; }, - visible(visibleStatus) { + visible(visibleStatus, visibleStatusBefore) { + if (this.applyMode) { + // When colorpicker is closed, reset the color value + if (!visibleStatus && visibleStatusBefore) { + this.colorValue = this.modelValue; + } + } + if (!visibleStatus) { return; } @@ -709,6 +780,12 @@ export default defineComponent({ methods: { debounceEmitColorValue: debounce(function emitValue() { + // @ts-expect-error - this context is wrong detected + // Don't emit the value if applyMode is active + if (this.applyMode) { + return; + } + /** * Emits the selected color value * @property {string} this.colorValue the new color value @@ -758,6 +835,13 @@ export default defineComponent({ this.removeOutsideClickEvent(); }, + applyColor() { + // Manually emit the color value + this.$emit("update:modelValue", this.colorValue); + // Close the colorpicker + this.visible = false; + }, + moveSelector(event: MouseEvent) { if (!this.isDragging) { return; @@ -1253,6 +1337,7 @@ export default defineComponent({ diff --git a/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-link.vue b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-link.vue new file mode 100644 index 000000000..ffbc6b1cb --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-link.vue @@ -0,0 +1,142 @@ + + + + + + + diff --git a/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-table.vue b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-table.vue new file mode 100644 index 000000000..5254fb0a1 --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button-table.vue @@ -0,0 +1,229 @@ + + + + + + + diff --git a/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button.vue b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button.vue new file mode 100644 index 000000000..e9c76008a --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar.vue b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar.vue new file mode 100644 index 000000000..ec01b3b37 --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/_internal/mt-text-editor-toolbar.vue @@ -0,0 +1,483 @@ + + + + + diff --git a/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.interactive.stories.ts b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.interactive.stories.ts new file mode 100644 index 000000000..a6428a658 --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.interactive.stories.ts @@ -0,0 +1,836 @@ +import { within, userEvent } from "@storybook/test"; +import { expect } from "@storybook/test"; +import { waitUntil } from "../../../_internal/test-helper"; + +import meta, { type MtTextEditorMeta, type MtTextEditorStory } from "./mt-text-editor.stories"; +import { defineStory } from "@/_internal/story-helper"; + +export default { + ...meta, + title: "Interaction Tests/Form/mt-text-editor", +} as MtTextEditorMeta; + +/** + * Selects the text of an element. It is important to + * click on the element before calling this function + * to ensure that the element is focused. Because + * Storybook throws manual events, the element is not + * focused by default. + */ +function selectText(element: HTMLElement) { + const selection = window.getSelection(); + const range = document.createRange(); + range.selectNodeContents(element); + selection?.removeAllRanges(); + selection?.addRange(range); +} + +export const VisualTestRenderEditor: MtTextEditorStory = defineStory({ + name: "Should render the text editor", + args: {}, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("82 characters")).toBeDefined(); + }, +}); + +export const VisualTestRenderEditorInlineMode: MtTextEditorStory = defineStory({ + name: "Should render the text editor in inline mode", + args: { + isInlineEdit: true, + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("82 characters")).toBeDefined(); + }, +}); + +export const VisualTestRenderDisabledEditor: MtTextEditorStory = defineStory({ + name: "Should render the disabled text editor", + args: { + disabled: true, + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("82 characters")).toBeDefined(); + }, +}); + +export const VisualTestRenderPlaceholder: MtTextEditorStory = defineStory({ + name: "Should render the placeholder inside text editor", + args: { + placeholder: "Type something...", + modelValue: "", + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("0 characters")).toBeDefined(); + }, +}); + +export const VisualTestRenderError: MtTextEditorStory = defineStory({ + name: "Should render a error in text editor", + args: { + error: { + code: 500, + detail: "Error while saving!", + }, + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("82 characters")).toBeDefined(); + }, +}); + +export const VisualTestRenderEditorInlineModeSelected: MtTextEditorStory = defineStory({ + name: "Should render the bubble menu in inline mode when text is selected", + args: { + isInlineEdit: true, + modelValue: `

Hello World

`, + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Wait until the counter is rendered + await waitUntil(() => canvas.getByText("11 characters")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Wait until the bubble menu is rendered + await waitUntil(() => document.querySelector(".mt-text-editor-toolbar") !== null); + + // Expect the bubble menu to be rendered + expect(canvas.getByLabelText("Format")).toBeDefined(); + expect(canvas.getByLabelText("Bold")).toBeDefined(); + expect(canvas.getByLabelText("Italic")).toBeDefined(); + + // Expect the contextual buttons to be rendered + expect(canvas.getByLabelText("Insert row before")).toBeDefined(); + expect(canvas.getByLabelText("Insert row after")).toBeDefined(); + expect(canvas.getByLabelText("Delete row")).toBeDefined(); + }, +}); + +export const SetParagraph: MtTextEditorStory = defineStory({ + name: "Should set paragraph", + args: { + modelValue: `

Hello World

`, + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Paragraph" + await userEvent.click(screen.getByText("Paragraph")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("

Hello World

"); + }, +}); + +export const SetHeadlineH1: MtTextEditorStory = defineStory({ + name: "Should set h1 headline", + args: { + modelValue: `

Hello World

`, + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Headline 1" + await userEvent.click(screen.getByText("Headline 1")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("

Hello World

"); + }, +}); + +export const SetHeadlineH2: MtTextEditorStory = defineStory({ + name: "Should set h2 headline", + args: { + modelValue: "

Hello World

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Headline 2" + await userEvent.click(screen.getByText("Headline 2")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("

Hello World

"); + }, +}); + +export const SetHeadlineH3: MtTextEditorStory = defineStory({ + name: "Should set h3 headline", + args: { + modelValue: "

Hello World

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Headline 3" + await userEvent.click(screen.getByText("Headline 3")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("

Hello World

"); + }, +}); + +export const SetHeadlineH4: MtTextEditorStory = defineStory({ + name: "Should set h4 headline", + args: { + modelValue: "

Hello World

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Headline 4" + await userEvent.click(screen.getByText("Headline 4")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("

Hello World

"); + }, +}); + +export const SetHeadlineH5: MtTextEditorStory = defineStory({ + name: "Should set h5 headline", + args: { + modelValue: "

Hello World

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Headline 5" + await userEvent.click(screen.getByText("Headline 5")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("
Hello World
"); + }, +}); + +export const SetHeadlineH6: MtTextEditorStory = defineStory({ + name: "Should set h6 headline", + args: { + modelValue: "

Hello World

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("11 characters")).toBeDefined(); + + // Click on button with aria-label "Format" + await userEvent.click(canvas.getByLabelText("Format")); + + // Click on menuitem with text "Headline 6" + await userEvent.click(screen.getByText("Headline 6")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue.mock.calls.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith("
Hello World
"); + }, +}); + +export const SetTextColor: MtTextEditorStory = defineStory({ + name: "Should set text color", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "colorpicker-toggle" + await userEvent.click(canvas.getByLabelText("colorpicker-toggle")); + + // Set new color value + await waitUntil(() => document.querySelector("[aria-label='colorpicker-apply-color']")); + + const redInput = screen.getByLabelText("red-value") as HTMLInputElement; + const greenInput = screen.getByLabelText("green-value") as HTMLInputElement; + const blueInput = screen.getByLabelText("blue-value") as HTMLInputElement; + + await userEvent.clear(redInput); + await userEvent.type(redInput, "255"); + + await userEvent.clear(greenInput); + await userEvent.type(greenInput, "0"); + + await userEvent.clear(blueInput); + await userEvent.type(blueInput, "0"); + + // Click on button with aria-label "Apply" + await userEvent.click(screen.getByLabelText("colorpicker-apply-color")); + + // Expect the color to be applied + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + expect(args.updateModelValue).toHaveBeenCalledWith( + '

Hello World

Some text

', + ); + }, +}); + +export const MakeFontBold: MtTextEditorStory = defineStory({ + name: "Should make font bold", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "bold" + await userEvent.click(canvas.getByLabelText("Bold")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "

Hello World

Some text

", + ); + }, +}); + +export const MakeFontItalic: MtTextEditorStory = defineStory({ + name: "Should make font italic", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "italic" + await userEvent.click(canvas.getByLabelText("Italic")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "

Hello World

Some text

", + ); + }, +}); + +export const MakeFontUnderline: MtTextEditorStory = defineStory({ + name: "Should make font underline", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "underline" + await userEvent.click(canvas.getByLabelText("Underline")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "

Hello World

Some text

", + ); + }, +}); + +export const MakeFontStrikeThrough: MtTextEditorStory = defineStory({ + name: "Should make font strike through", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "strike-through" + await userEvent.click(canvas.getByLabelText("Strikethrough")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "

Hello World

Some text

", + ); + }, +}); + +export const MakeFontSuperScript: MtTextEditorStory = defineStory({ + name: "Should make font super script", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "superscript" + await userEvent.click(canvas.getByLabelText("Superscript")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "

Hello World

Some text

", + ); + }, +}); + +export const MakeFontSubScript: MtTextEditorStory = defineStory({ + name: "Should make font sub script", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "subscript" + await userEvent.click(canvas.getByLabelText("Subscript")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "

Hello World

Some text

", + ); + }, +}); + +export const SetTextAlignmentLeft: MtTextEditorStory = defineStory({ + name: "Should set text alignment left", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Text Alignment" + await userEvent.click(canvas.getByLabelText("Text Alignment")); + + // Click on menuitem with text "Align left" + await userEvent.click(screen.getByText("Align left")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content (no change expected because left is default) + expect(args.updateModelValue).toHaveBeenCalledWith("

Hello World

Some text

"); + }, +}); + +export const SetTextAlignmentCenter: MtTextEditorStory = defineStory({ + name: "Should set text alignment center", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Text Alignment" + await userEvent.click(canvas.getByLabelText("Text Alignment")); + + // Click on menuitem with text "Align center" + await userEvent.click(screen.getByText("Align center")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + '

Hello World

Some text

', + ); + }, +}); + +export const SetTextAlignmentRight: MtTextEditorStory = defineStory({ + name: "Should set text alignment right", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("20 characters")).toBeDefined(); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Text Alignment" + await userEvent.click(canvas.getByLabelText("Text Alignment")); + + // Click on menuitem with text "Align right" + await userEvent.click(screen.getByText("Align right")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + '

Hello World

Some text

', + ); + }, +}); + +export const SetTextAlignmentJustify: MtTextEditorStory = defineStory({ + name: "Should set text alignment justify", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args, screen }) => { + const canvas = within(canvasElement); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Text Alignment" + await userEvent.click(canvas.getByLabelText("Text Alignment")); + + // Click on menuitem with text "Align justify" + await userEvent.click(screen.getByText("Justify")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + '

Hello World

Some text

', + ); + }, +}); + +export const SetUnorderedList: MtTextEditorStory = defineStory({ + name: "Should set unordered list", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Unordered list" + await userEvent.click(canvas.getByLabelText("Insert Unordered List")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "
  • Hello World

Some text

", + ); + }, +}); + +export const SetOrderedList: MtTextEditorStory = defineStory({ + name: "Should set ordered list", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Ordered list" + await userEvent.click(canvas.getByLabelText("Insert Ordered List")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + "
  1. Hello World

Some text

", + ); + }, +}); + +export const SetLink: MtTextEditorStory = defineStory({ + name: "Should set link", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + // Click inside the editor + await userEvent.click(canvas.getByText("Hello World")); + + // Select "Hello World" text + selectText(canvas.getByText("Hello World")); + + // Click on button with aria-label "Link" + await userEvent.click(canvas.getByLabelText("Link")); + + // Get body + const body = within(document.body); + + // Set link url + const linkInput = body.getByLabelText("Link URL"); + await userEvent.clear(linkInput); + await userEvent.type(linkInput, "https://www.shopware.com"); + + // Toggle link target + const targetCheckbox = document.querySelector( + "div[aria-label='Open in new tab'] input[type='checkbox'", + ) as HTMLInputElement; + await userEvent.click(targetCheckbox); + + // Click on button with text "Apply link" + await userEvent.click(body.getByText("Apply link")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + '

Hello World

Some text

', + ); + }, +}); + +export const InsertTable: MtTextEditorStory = defineStory({ + name: "Should insert table", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + // Click on button with aria-label "Table" + await userEvent.click(canvas.getByLabelText("Table")); + + // Get body + const body = within(document.body); + + // Set table columns + const columnsInput = body.getByLabelText("Columns"); + await userEvent.type(columnsInput, "{selectall}{backspace}4"); + + // Set table rows + const rowsInput = body.getByLabelText("Rows"); + await userEvent.type(rowsInput, "{selectall}{backspace}2"); + + // Click on button with text "Insert table" + await userEvent.click(body.getByText("Insert table")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Check if args was triggered with new content + expect(args.updateModelValue).toHaveBeenCalledWith( + '

Hello World

Some text

', + ); + }, +}); + +export const VisualTestShowContextualButtons: MtTextEditorStory = defineStory({ + name: "Should show contextual buttons when inside a table", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement, args }) => { + const canvas = within(canvasElement); + + // Click on button with aria-label "Table" + await userEvent.click(canvas.getByLabelText("Table")); + + // Get body + const body = within(document.body); + + // Wait until modal transition is finished + await waitUntil(() => document.body.querySelector("div[role='dialog']")); + await waitUntil(() => !document.body.querySelector(".modal-enter-active")); + + // Set table columns + const columnsInput = body.getByLabelText("Columns"); + await userEvent.type(columnsInput, "{selectall}{backspace}4"); + + // Set table rows + const rowsInput = body.getByLabelText("Rows"); + await userEvent.type(rowsInput, "{selectall}{backspace}2"); + + // Click on button with text "Insert table" + await userEvent.click(body.getByText("Insert table")); + + // Wait until modal is closed + await waitUntil(() => !document.body.querySelector("div[role='dialog']")); + + // Wait until args was triggered with new content + await waitUntil(() => args.updateModelValue?.mock?.calls?.length > 0); + + // Click inside a table cell + const tableCell = document.querySelector( + ".mt-text-editor__content-editor table td", + ) as HTMLElement; + await userEvent.click(tableCell); + + // Expect the contextual buttons to be rendered + expect(canvas.getByLabelText("Insert row before")).toBeDefined(); + expect(canvas.getByLabelText("Insert row after")).toBeDefined(); + expect(canvas.getByLabelText("Delete row")).toBeDefined(); + expect(canvas.getByLabelText("Insert column before")).toBeDefined(); + expect(canvas.getByLabelText("Insert column after")).toBeDefined(); + expect(canvas.getByLabelText("Delete column")).toBeDefined(); + expect(canvas.getByLabelText("Remove table")).toBeDefined(); + }, +}); + +export const VisualTestRenderCodeView: MtTextEditorStory = defineStory({ + name: "Should render the code view", + args: { + modelValue: "

Hello World

Some text

", + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + // Click on button with aria-label "Toggle code" + await userEvent.click(canvas.getByLabelText("Toggle code")); + + // Expect the code view to be rendered + const codeEditor = canvas.getByRole("textbox"); + expect(codeEditor).toBeDefined(); + expect(codeEditor.innerText).toBe("

Hello World

Some text

"); + }, +}); diff --git a/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.mdx b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.mdx new file mode 100644 index 000000000..48e8d06c5 --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.mdx @@ -0,0 +1,445 @@ +import { Canvas, Meta, Markdown } from "@storybook/blocks"; + +import * as TextEditorStories from "./mt-text-editor.stories"; + + + +# Text Editor + +The `mt-text-editor` component is a powerful and flexible rich text editor built with [tiptap](https://tiptap.dev/). It is designed to handle a variety of use cases, such as adding rich text editing to your application. This component is highly customizable and can be extended with additional buttons, features, or configurations to suit your needs. + +## Features + +- **Rich Text Editing**: Includes common formatting options like bold, italic, underline, and more, with support for text alignment, bullet lists, ordered lists, and more. +- **Customizable Toolbar**: Add or exclude toolbar buttons as per your requirements. +- **Code Editor Mode**: Toggle between WYSIWYG editing and raw HTML editing with CodeMirror integration. +- **Character Count**: Displays a live character count at the bottom. +- **Inline Editing**: Option to enable inline editing with a floating toolbar. +- **Contextual Buttons**: Provides custom buttons for the footer of the editor that change contextually based on the current cursor position. + +--- + +## Usage + +To use the `mt-text-editor` component in your project, import it and provide the required props. + +### Minimal Example + +```html + + + +``` + + + +### Inline Editing + +```html + + + +``` + + + +### Custom Toolbar Buttons + +```html + + + +``` + + + +### Props + + + {` +| Prop Name | Type | Default | Description | +| --------------- | ------- | ------- | ----------------------------------------------------------------------- | +| modelValue | String | '' | The HTML content of the editor. Use 'v-model' to bind it to a variable. | +| isInlineEdit | Boolean | 'false' | Enables inline editing with a floating toolbar. | +| tipTapConfig | Object | {} | Custom configuration for the tiptap editor. | +| customButtons | Array | [] | Array of custom buttons to add to the toolbar. | +| excludedButtons | Array | [] | Array of button names to exclude from the toolbar. | +`} + + +--- + +## Slots + +The `mt-text-editor` component provides several slots for customization: + +### `button_` + +Allows you to override or customize specific buttons in the toolbar. For example, to customize the `text-color` button: + +```html + + + +``` + +### `contextual-buttons` + +Provides custom buttons for the footer of the editor. These buttons can change contextually based on the editor's state. + +### `footer-left` and `footer-right` + +Customize the left or right sections of the editor's footer. + +--- + +## Toolbar Buttons + +The `mt-text-editor` includes the following built-in buttons by default: + + + {` +| Button Name | Description | Alignment | Position | +| -------------- | -------------------------------------------------- | --------- | -------- | +| format | Opens a popover with formatting options. | 'left' | 1000 | +| text-color | Allows the user to pick a text color. | 'left' | 2000 | +| bold | Toggles bold text. | 'left' | 3000 | +| italic | Toggles italic text. | 'left' | 4000 | +| underline | Toggles underlined text. | 'left' | 5000 | +| strikethrough | Toggles strikethrough text. | 'left' | 6000 | +| superscript | Toggles superscript text. | 'left' | 7000 | +| subscript | Toggles subscript text. | 'left' | 8000 | +| text-alignment | Opens a popover to set text alignment. | 'left' | 9000 | +| unordered-list | Toggles an unordered list. | 'left' | 10000 | +| numbered-list | Toggles an numbered list. | 'left' | 11000 | +| link | Opens a modal to insert or edit links. | 'left' | 12000 | +| table | Opens a modal to insert or modify tables. | 'left' | 13000 | +| undo | Undoes the last action. | 'right' | 1000 | +| redo | Redoes the last undone action. | 'right' | 2000 | +| toggle-code | Toggles between WYSIWYG mode and raw HTML editing. | 'right' | 3000 | +`} + + +You can exclude or add custom buttons using the `excludedButtons` and `customButtons` props. + +--- + +## Customizing with TipTap Extensions + +The editor uses [tiptap extensions](https://tiptap.dev/guide/extensions) for its features. +You can include custom extensions by passing them through the `tipTapConfig` prop except the hardcoded properties `content`, `editorProps` and `onUpdate`. +For example: + +```html + + + +``` + +--- + +## Customizing with Custom Buttons + +The `mt-text-editor` supports adding custom buttons to the toolbar by passing an array of `CustomButton` objects to the `customButtons` prop. + +### Key Properties of `CustomButton` + +- **`name`** (required): A unique identifier for the button. +- **`label`** (required): The visible label for the button, can be the direct text or a translation key. +- **`icon`**: An optional icon to display instead of the label. You can use an icon name from the Meteor icon set. +- **`isActive`**: A function that determines whether the button is currently active (e.g., for toggling bold or italic formatting). +- **`action`**: A function that executes when the button is clicked. This is where you can apply an editor command. +- **`children`**: An array of child buttons to create a dropdown or multi-level menu. +- **`alignment`**: Specifies whether the button should appear on the left or right side of the toolbar. +- **`position`**: Defines the order of the button in the toolbar. Buttons with lower `position` values appear first. See the table with existing buttons to see their positions. +- **`disabled`**: A function that determines whether the button should be disabled. +- **`contextualButtons`**: A function that returns additional buttons to display in the footer based on the editor's state. + +--- + +### Example: Adding a Simple Custom Button + +Here’s how you can add a simple custom button to toggle bold formatting: + +```html + + + +``` + +### Example: Adding a Dropdown Menu + +You can create a dropdown menu by using the `children` property. Each child button is defined as another `CustomButton` object. + +```html + + + +``` + +--- + +### Example: Adding Contextual Buttons in the Footer + +Contextual buttons are buttons that appear in the editor's footer and can change depending on the editor's current state. Use the `contextualButtons` property to define these. + +```html + + + +``` + +--- + +### Example: Disabling a Button Based on Editor State + +You can disable a button dynamically by providing a `disabled` function. For example, disabling the "Bold" button if the editor is empty: + +```html + + + +``` + +--- + +### Example: Using a complete custom button with the dynamic slot + +For each button a dynamic slot is rendered: `button_${name}`. You can use this slot to replace the automatic rendered button defined in the button object with your own component: + +```html + + + +``` + +--- + +### Positioning Custom Buttons in the Toolbar + +By default, buttons are sorted in the toolbar based on their `position` value. Buttons with lower `position` values appear earlier. The default buttons have predefined positions in increments of `1000`, leaving space for you to insert custom buttons at specific positions. + +For example: + +- Default buttons (like `bold`, `italic`, etc.) have `position` values starting at `1000`. +- You can insert your custom buttons between or after them by specifying values like `1500`, `3500`, or `8500`. + +```js +const customButtons = [ + { + name: "custom-highlight", + label: "Highlight", + icon: "circle-xs", + position: 3500, // Places this button between "Bold" (3000) and "Italic" (4000) + action: (editor) => editor.chain().focus().toggleHighlight().run(), + }, +]; +``` + +--- + +## Code Editor Mode + +The `mt-text-editor` includes a code editor mode for editing raw HTML. This mode is powered by [CodeMirror](https://codemirror.net/). Use the `toggle-code` button to switch between WYSIWYG mode and code mode. diff --git a/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.stories.ts b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.stories.ts new file mode 100644 index 000000000..0d3cb6e6e --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.stories.ts @@ -0,0 +1,81 @@ +import type { StoryObj } from "@storybook/vue3"; +import MtTextEditor from "./mt-text-editor.vue"; +import type { SlottedMeta } from "@/_internal/story-helper"; +import MtTextEditorToolbarButtonColor from "./_internal/mt-text-editor-toolbar-button-color.vue"; +import { ref } from "vue"; +import Highlight from "@tiptap/extension-highlight"; +import { fn } from "@storybook/test"; + +export type MtTextEditorMeta = SlottedMeta< + typeof MtTextEditor, + "default" | "click" | "updateModelValue" +>; + +export default { + title: "Components/Form/mt-text-editor", + component: MtTextEditor, + args: { + modelValue: `

Hello World

Some text

  1. Lorem

  2. Ipsum

First

Second

Third

Lorem

Ipsum

non

dolor

sit

amet

After table

`, + updateModelValue: fn(), + label: "My Text editor", + }, + render: (args) => ({ + components: { MtTextEditor, MtTextEditorToolbarButtonColor }, + setup() { + const currentModelValue = ref(args.modelValue); + const onUpdateModelValue = (value: string) => { + currentModelValue.value = value; + args.updateModelValue(value); + }; + + return { + args, + currentModelValue, + onUpdateModelValue, + }; + }, + template: ` +
+ + + +
`, + }), +} as MtTextEditorMeta; + +export type MtTextEditorStory = StoryObj; + +export const DefaultStory: MtTextEditorStory = { + name: "mt-text-editor", +}; + +export const InlineEditStory: MtTextEditorStory = { + name: "mt-text-editor (inline edit)", + args: { + isInlineEdit: true, + }, +}; + +export const CustomButtonsStory: MtTextEditorStory = { + name: "mt-text-editor (custom buttons)", + args: { + modelValue: `

Hello World

In the toolbar you see now a new highlight button.

`, + tipTapConfig: { + extensions: [Highlight], + }, + customButtons: [ + { + name: "highlight", + label: "Highlight", + icon: "regular-circle-xs", + action: (editor) => { + editor.chain().focus().toggleMark("highlight").run(); + }, + }, + ], + }, +}; diff --git a/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.vue b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.vue new file mode 100644 index 000000000..c20582b40 --- /dev/null +++ b/packages/component-library/src/components/form/mt-text-editor/mt-text-editor.vue @@ -0,0 +1,690 @@ + + + + + diff --git a/packages/component-library/src/components/form/mt-text-field/mt-text-field.vue b/packages/component-library/src/components/form/mt-text-field/mt-text-field.vue index 861293e9d..733e474cd 100644 --- a/packages/component-library/src/components/form/mt-text-field/mt-text-field.vue +++ b/packages/component-library/src/components/form/mt-text-field/mt-text-field.vue @@ -8,7 +8,7 @@ :disable-inheritance-toggle="disableInheritanceToggle" :copyable="copyable" :copyable-tooltip="copyableTooltip" - :copyable-text="currentValue" + :copyable-text="String(currentValue)" :has-focus="hasFocus" :help-text="helpText" :name="name" @@ -33,6 +33,7 @@ :value="currentValue" :placeholder="placeholder" :maxlength="maxLength" + :aria-label="label" @input="onInput" @change.stop="onChange" @focus="setFocusClass" @@ -53,13 +54,13 @@