Compare commits

...

425 Commits

Author SHA1 Message Date
cceccae31f Merge pull request 'Fix btnTextDir subscription for “Diagram” and “OLE” modes' (#968) from fix/btnTextDir into release/v9.3.0 2026-02-09 20:11:14 +00:00
af1fdf1918 Merge pull request 'feature/form-multi-page' (#965) from feature/form-multi-page into release/v9.3.0 2026-02-09 19:55:40 +00:00
1d6accf87f Fix btnTextDir subscription for “Diagram” and “OLE” modes 2026-02-09 18:19:39 +03:00
cd8e6d0d9e Merge pull request 'fix/bug-79647' (#967) from fix/bug-79647 into release/v9.3.0 2026-02-09 14:57:22 +00:00
088d7b3260 Merge pull request '[PDFE] Hide review resolve button. For bug 79596)' (#962) from fix/hide-review-resolve-for-pdf into release/v9.3.0 2026-02-09 14:56:04 +00:00
8b429c4717 [desktop] fix bug 64448 2026-02-09 17:27:19 +03:00
f552067151 Fix: missing hyperlink props in picture context menu 2026-02-09 16:04:37 +03:00
200420cce1 Refactoring 2026-02-09 11:22:54 +03:00
9cf9e828ee [SSE] fix bug 79617 2026-02-09 01:18:09 +03:00
34e68add90 fix 2026-02-08 23:29:53 +03:00
7229fa3290 added multi page btn 2026-02-08 23:28:04 +03:00
817736b0bc Merge pull request 'fix bugs: 67695, 76519' (#953) from fix/custom-format-refactor into release/v9.3.0 2026-02-08 19:42:37 +00:00
5037f4f97c Merge pull request '[VE] Fix bug 79695' (#963) from fix/bug-79695 into release/v9.3.0 2026-02-07 09:00:56 +00:00
79882fa084 [SSE] Added “link” item to the context menu 2026-02-06 13:07:30 +03:00
144b94a30b [PDFE] Hide review resolve button. For bug 79596) 2026-02-06 10:39:01 +03:00
aafd624e22 fix bug 79647 2026-02-05 18:01:57 +03:00
37b8c5d95a Merge pull request 'fix/bug79770' (#961) from fix/bug79770 into release/v9.3.0 2026-02-05 12:27:24 +00:00
35929cd342 added error for cell reference 2026-02-05 12:04:51 +03:00
a8d7e13b34 fixed bug 79770 2026-02-05 01:43:27 +03:00
880e34cf65 Merge pull request 'Fix bug 76359' (#959) from fix/bug76359 into release/v9.3.0 2026-02-04 20:16:52 +00:00
fee828c30f Merge pull request 'fixed edit text btn in edit mode' (#942) from fix/annot-edit-text into release/v9.3.0 2026-02-04 20:02:15 +00:00
347cc6b5d8 Fix bug 76359 2026-02-04 13:58:51 +03:00
561492b6f3 added btn edit text hiding 2026-02-04 13:41:12 +03:00
c1ce875f05 Merge pull request '[SSE] Fix status caption position' (#944) from fix/status-caption into release/v9.3.0 2026-02-03 08:17:20 +00:00
82a2d272d1 [VE] Fix bug 79695 2026-02-02 12:51:50 +03:00
3fbd5d7afc Merge pull request 'fix bug 79281' (#920) from fix/bug-79281 into release/v9.3.0 2026-02-01 20:38:18 +00:00
6fa81f11ec Merge pull request 'fix/zoom-btns' (#956) from fix/zoom-btns into release/v9.3.0 2026-01-30 10:29:53 +00:00
e59585ebd8 [icons] upload 2026-01-30 14:51:35 +05:00
4d3758f6fc fixed zoom btns ui 2026-01-30 11:51:57 +03:00
98ef8dedb8 Refactoring 2026-01-30 00:53:44 +03:00
d1870a8c53 Merge pull request 'fix: disable elastic scrolling for TabBar.js' (#933) from fix/sheets-tabbar-scroll into release/v9.3.0 2026-01-29 21:45:10 +00:00
0a55c49b8c Merge pull request 'added zoom to 100% btn' (#948) from feature/zoom-to-100 into release/v9.3.0 2026-01-29 08:30:40 +00:00
9c74bd6f2c Merge pull request 'fix-pdf-text-field-icon-color' (#951) from fix/pdf-text-field-icon-color into release/v9.3.0 2026-01-28 07:59:51 +00:00
02aee30b80 [icons] text field fix 2026-01-28 12:56:13 +05:00
8273d93a13 Merge pull request 'fix bug 79555, 77436' (#950) from fix/bug-79555 into release/v9.3.0 2026-01-27 13:28:03 +00:00
a1edf5f327 fix bug 79555, 77436 2026-01-27 16:20:30 +03:00
3aacba5138 Merge pull request '[SSE] Fix bug 79564' (#949) from fix/bug-79564 into release/v9.3.0 2026-01-27 09:52:57 +00:00
e6b1e12506 [SSE] Fix bug 79564 2026-01-27 12:43:19 +03:00
15b9c2f0d1 added zoom to 100% btn 2026-01-26 15:07:16 +03:00
d27cb1ce87 Merge pull request 'feature/pages-in-row' (#938) from feature/pages-in-row into release/v9.3.0 2026-01-25 21:36:31 +00:00
5df9544428 Merge pull request 'fix bug 79210' (#941) from fix/bug-79210 into release/v9.3.0 2026-01-25 18:43:22 +00:00
4c2873fda7 Merge pull request 'fix/bug-78271' (#945) from fix/bug-78271 into release/v9.3.0 2026-01-25 18:25:19 +00:00
e8a1ec82b2 Merge pull request 'feature/rename-shortcut-mod-keys' (#946) from feature/rename-shortcut-mod-keys into release/v9.3.0 2026-01-24 22:12:11 +00:00
fb7684d1d2 [SSE] Fix status caption position 2026-01-23 13:33:33 +03:00
ffc4ad2de5 fixed edit text btn in edit mode 2026-01-23 12:27:20 +03:00
d0c30399cb Merge pull request 'feature/pdf-history' (#922) from feature/pdf-history into release/v9.3.0 2026-01-23 08:53:59 +00:00
390078afac [PDFE] fix after merge 2026-01-23 11:52:05 +03:00
b353271811 fix bug 79210 2026-01-22 19:20:57 +03:00
b6b91e1167 Merge pull request 'fix bug 79444' (#939) from fix/bug-79444 into release/v9.3.0 2026-01-22 14:57:22 +00:00
5461a95bf9 fix bug 79444 2026-01-22 13:57:15 +05:00
4d96be4bf1 fix: current format show in custom format selection menu 2026-01-22 13:31:50 +05:00
bc4f531cfb fix: show ui format type 2026-01-22 13:28:02 +05:00
d113d2259e uploaded mock big icons 2026-01-22 11:19:47 +03:00
46adc364d1 uploaded icons 2026-01-22 00:18:03 +03:00
eb390d2fc0 fix toggles 2026-01-21 23:46:42 +03:00
7be722153e Merge pull request '[SSE] Disable interface when opening background' (#937) from fearute/only-first-rows into release/v9.3.0 2026-01-21 20:21:28 +00:00
16a867f339 [SSE] Delete tip 2026-01-21 18:47:10 +03:00
a7f0d0b674 [main] hide comment's balloon arow 2026-01-21 14:06:34 +00:00
16e9e75397 Update DimensionPicker.js 2026-01-21 13:39:55 +03:00
38e7601225 [SSE] Disable interface when opening background 2026-01-21 12:30:32 +03:00
ab4f28dd09 refactoring 2026-01-21 11:47:23 +03:00
8564d5c221 refactor 2026-01-21 11:33:26 +03:00
ad749433f8 added logic 2026-01-21 11:29:50 +03:00
6524009758 fix: disable elastic scrolling for TabBar.js 2026-01-21 02:41:10 +05:00
5b6b1423f5 Merge pull request 'Add tsv format' (#932) from feature/tsv-format into release/v9.3.0 2026-01-20 14:16:23 +00:00
a098014468 Add tsv format 2026-01-20 13:40:45 +03:00
328d214a45 added one and multiple pages btns 2026-01-19 14:27:46 +03:00
8fdd768a04 Merge pull request 'fix bug 72709' (#926) from fix/bug-72709 into release/v9.3.0 2026-01-19 10:53:18 +00:00
9a138126f0 Merge pull request 'Delete comment' (#927) from fix/delete-comment into release/v9.3.0 2026-01-19 09:05:05 +00:00
e61f6d44b3 Merge pull request 'fix/bug-73908' (#928) from fix/bug-73908 into release/v9.3.0 2026-01-19 09:04:01 +00:00
86d3991214 Delete comment 2026-01-19 12:02:01 +03:00
90a61de642 Merge pull request 'fix/bug-78988' (#898) from fix/bug-78988 into release/v9.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/web-apps/pulls/898
2026-01-16 21:30:51 +00:00
974917eba6 Merge branch 'release/v9.3.0' into fix/bug-78988 2026-01-17 00:15:01 +03:00
0b379ba8bc fix bug 72709 2026-01-16 19:22:44 +03:00
ad8a75eff4 [common] Fix bug 78984 2026-01-16 14:50:33 +03:00
97c335cf70 [SSE] handled new long action 2026-01-16 00:09:18 +03:00
4f3dc9e1b0 some description after merge 2026-01-15 14:45:35 +03:00
683ae71bee Merge branch 'release/v9.3.0' into feature/pdf-history 2026-01-15 12:52:14 +03:00
5b02adaf7d feature: add radiobutton in format selection menu 2026-01-15 13:50:43 +05:00
25e2e9fb5a [common] Monaco editor for IE 2026-01-15 10:57:06 +03:00
0fc869470e fix bug 79281 2026-01-14 20:04:02 +05:00
5d11041a22 Merge pull request 'fix bug 69789' (#918) from fix/bug-69789 into release/v9.3.0 2026-01-14 13:07:47 +00:00
39c13bd2b2 fix bug 69789 2026-01-13 14:41:26 +03:00
f394dae073 Merge pull request 'fix/bug-79098' (#917) from fix/bug-79098 into release/v9.3.0 2026-01-13 11:03:05 +00:00
3053a99ce4 Refactor 2026-01-13 12:16:43 +03:00
f433ce1525 Refactoring 2026-01-12 11:53:31 +03:00
4fcb436b23 fix: prevent nextLevel when toolbar is hidden 2025-12-30 17:41:17 +03:00
8e321980b3 [DE PDFE PE VE] Removed restriction on multiple page ranges 2025-12-30 16:38:39 +03:00
879dfcb7f1 Merge pull request 'Fix bug 79010' (#911) from fix/79010 into release/v9.3.0 2025-12-30 13:22:28 +00:00
a9c68eb436 Fix bug 79010 2025-12-30 16:07:55 +03:00
a744ead987 Merge pull request 'fix bug 66633' (#908) from fix/bug-66633 into release/v9.3.0 2025-12-30 09:07:15 +00:00
96ecbcdf47 fix 2025-12-29 15:36:00 +03:00
a636e85865 [PDFE] Removed restriction on multiple page ranges 2025-12-29 12:48:57 +03:00
6e2c70fc5c Fix 2025-12-29 12:48:46 +03:00
80c7bfd8a1 [DE PDFE PE VE] Refactoring pages option for print preview 2025-12-29 12:33:39 +03:00
7b51a6404e fix import 2025-12-29 11:54:39 +03:00
6539c12455 fix bug 66633 2025-12-28 20:59:02 +03:00
b6b4c458ae fix bug 79098 2025-12-26 16:32:14 +03:00
80d4069499 [PDFE] Refactoring content option for print preview 2025-12-26 16:04:25 +03:00
5aad2be3a9 Merge pull request 'fix/bug-40743' (#906) from fix/bug-40743 into release/v9.3.0 2025-12-26 10:44:14 +00:00
051da094b8 [DE] Fix lock for shape hyperlink 2025-12-25 18:27:30 +03:00
a209c9bc4d For bug 40743 2025-12-25 18:16:11 +03:00
816f63a69c Merge pull request 'fix/bug-74669' (#895) from fix/bug-74669 into release/v9.3.0 2025-12-25 14:37:28 +00:00
f280fe4512 [common] Sort display keys 2025-12-25 11:38:05 +03:00
db6c63bb21 fix: safari only 2025-12-25 12:34:21 +05:00
ab989b785d [common] Delete the name of key modifiers for macOS 2025-12-24 14:35:59 +03:00
91a96d8571 [SSE] Refactoring 2025-12-23 17:24:36 +03:00
8a5d334500 [PDFE] Print preview for web editor 2025-12-23 17:23:19 +03:00
0d158790c6 Merge pull request 'Fix bug 68833' (#900) from fix/bug-68833 into release/v9.3.0 2025-12-23 13:00:18 +00:00
eb19ad98d0 Merge pull request 'fix/modern-themes-colors-wcag' (#888) from fix/modern-themes-colors-wcag into release/v9.3.0 2025-12-23 10:44:13 +00:00
40745debca Update switcher.less 2025-12-23 15:37:20 +05:00
567bc38ee6 Fix bug 68833 2025-12-23 13:29:51 +03:00
988c89fb89 Update switcher.less 2025-12-23 15:04:17 +05:00
e27563c792 Added translation to REGEX- functions for mobile version 2025-12-22 16:39:34 +03:00
1f2e4484df Added translations to REGEX functions 2025-12-22 12:46:21 +03:00
b74e866d9f [PDFE] Change default value for content option 2025-12-22 10:56:44 +03:00
fc72c0c431 Merge pull request 'Update translation' (#896) from fix/translation into release/v9.3.0 2025-12-19 15:07:14 +00:00
8b8b6feda5 Update translation 2025-12-19 18:04:06 +03:00
5efec33149 fix: ie caption offset 2025-12-19 17:01:40 +05:00
372a841267 Merge pull request 'fix/bug-62824' (#893) from fix/bug-62824 into release/v9.3.0 2025-12-19 11:46:37 +00:00
b761b57a7f Merge master into release/v9.3.0 2025-12-18 14:17:49 +00:00
5271ea241e [Visio] An “Open Location” button has been added to the menu. 2025-12-18 16:59:45 +03:00
17fed249aa fix bug 62824 2025-12-18 16:49:13 +03:00
cd4d5b180e Replace CloudFront invalidation with API Gateway endpoint 2025-12-18 12:39:58 +00:00
80ed35980d [PDFE] Add content option in print preview 2025-12-18 14:13:27 +03:00
deb1927339 Fix 2025-12-18 12:17:14 +03:00
3cfbf8bdb2 Update switcher.less
Fix bug 78690
2025-12-18 13:13:01 +05:00
77e9fc18bd fix bug 74669 2025-12-17 21:50:01 +05:00
c53c7a5372 Merge pull request 'fix bug 71853' (#794) from fix/bug-71853 into release/v9.3.0 2025-12-17 15:38:52 +00:00
04ee7a4dcb Merge branch 'release/v9.3.0' into fix/bug-71853 2025-12-17 18:37:42 +03:00
ccd29b1ce1 Merge branch hotfix/v9.2.1 into release/v9.3.0 2025-12-17 15:37:06 +00:00
de718958b0 Refactoring 2025-12-17 18:26:39 +03:00
18124d4848 [SSE] Refactoring 2025-12-17 18:20:25 +03:00
23c9c5f367 Merge pull request 'fix bug 78927' (#886) from fix/bug-78927 into release/v9.3.0 2025-12-17 15:16:48 +00:00
de1d0ff726 Fix translation 2025-12-17 18:16:31 +03:00
e16c871a3b [SSE] Refactoring 2025-12-17 18:10:39 +03:00
20b70e536b [SSE] Fix protect sheet 2025-12-17 17:25:02 +03:00
125738ea47 Merge pull request '[SSE] Add multi delimiter for text paste type' (#887) from feature/paste-text-multi-delimiter into release/v9.3.0 2025-12-17 14:21:34 +00:00
eefaebc6e1 [SSE] Fix lock for format cells button 2025-12-17 17:08:07 +03:00
b238b8a3c4 Fix bug 75058 2025-12-17 18:46:25 +05:00
c2074bbff6 Merge branch hotfix/v9.2.1 into master 2025-12-17 11:42:20 +00:00
8b818835dd fix bug 78927 2025-12-17 13:18:34 +03:00
20ea4914f2 [SSE] Add multi delimiter for text paste type 2025-12-17 12:46:30 +03:00
342369bf28 Merge pull request 'feature/sse-solver' (#885) from feature/sse-solver into release/v9.3.0 2025-12-17 09:04:19 +00:00
fef3fcee09 Merge branch 'release/v9.3.0' into feature/sse-solver 2025-12-17 11:43:18 +03:00
2d7b983aa9 Refactoring 2025-12-17 11:37:27 +03:00
bff0bcd258 [DE SSE] Add auto option for orientation cmb in print preview 2025-12-16 15:30:48 +03:00
98cf7c7d19 Merge pull request 'fix/bugfix' (#883) from fix/bugfix into release/v9.3.0 2025-12-15 19:42:00 +00:00
87fdbb26b5 [DE] Fix buttons id 2025-12-15 22:41:03 +03:00
a9b6db824f [PE] Fix context menu 2025-12-15 22:34:56 +03:00
7bd198f29c Merge pull request 'develop' (#877) from develop into release/v9.3.0 2025-12-12 09:31:40 +00:00
9c5ee26d95 Merge pull request 'fix bug 76643' (#874) from fix/bug-76643 into develop 2025-12-12 09:01:25 +00:00
782650d0e6 fix: remove darkening, deleting unused variable 2025-12-12 11:53:08 +03:00
f24d2d3296 Revert "fix"
This reverts commit 3db3afa609.
2025-12-12 11:49:32 +03:00
03c5339e1e Revert "fix bug 76643"
This reverts commit 206c8504dd.
2025-12-12 11:47:30 +03:00
65933c6431 Merge pull request 'fix bug 78998' (#870) from fix/bug-78998 into develop 2025-12-11 20:54:43 +00:00
9396b97b6e Merge pull request '[PE] For bug 62500' (#876) from fix/bug-62500 into release/v9.3.0 2025-12-11 17:28:19 +00:00
4c401747a1 Fix Bug 78901 2025-12-11 16:20:58 +03:00
02d82fa465 [mobile] fix icons color for the light theme 2025-12-11 14:16:30 +03:00
3db3afa609 fix 2025-12-11 13:28:55 +03:00
ff83710554 [SSE] Fix solver settings 2025-12-11 12:03:08 +03:00
46a85123d2 [PE] For bug 62500 2025-12-11 11:01:35 +03:00
57daa8c703 Merge pull request 'feature/minimize-space' (#873) from feature/minimize-space into develop 2025-12-11 07:25:05 +00:00
53eedf0d36 Merge pull request 'make the text into about page to be selectable' (#872) from feature/info-select into develop 2025-12-10 20:48:21 +00:00
206c8504dd fix bug 76643 2025-12-10 19:36:38 +03:00
b9e66242ff space between image and buttons in table form become the same 2025-12-10 18:45:06 +03:00
d967962ed0 space between image and buttons in table form become the same 2025-12-10 18:44:02 +03:00
de384c1af7 remove selectability of license data in about 2025-12-10 17:54:00 +03:00
e2f06b92c1 Merge pull request '[SSE] Support delimiters array for text to columns dialog' (#868) from feature/text-multi-delimiter into develop 2025-12-10 11:34:13 +00:00
8d34a21374 make the text into about page to be selectable 2025-12-10 13:15:06 +03:00
9c94a95960 Merge pull request '[se] second navbar on page load' (#836) from fix/second-navbar-on-page-load into develop
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/web-apps/pulls/836
2025-12-09 21:52:17 +00:00
5708ec53a1 [mobile] fix skeleton icons color 2025-12-10 00:50:27 +03:00
89aaf9902f [DE mobile] show some buttons during skeleton 2025-12-10 00:49:49 +03:00
d053220d02 [mobile] changed skeleton removal from dom 2025-12-10 00:48:22 +03:00
33450060f5 Fix Bug 79022 2025-12-09 22:43:44 +03:00
129be88ce2 Fix Bug 78904 2025-12-09 22:14:34 +03:00
4f83af9ace [DE] show toolbar's "mailmerge" options 2025-12-08 23:56:21 +03:00
a7eaa212a0 fix bug 78998 2025-12-08 18:51:31 +03:00
8e5911aa64 Merge pull request 'feature/pdf-link' (#869) from feature/pdf-link into develop 2025-12-08 09:57:31 +00:00
49cf895a2b Merge pull request 'fix/bug-72793' (#866) from fix/bug-72793 into develop 2025-12-05 21:50:15 +00:00
313c913122 Fix applying settings when ok button is disabled 2025-12-06 00:36:17 +03:00
c5a563eceb [PDF] Fix focus in the window (when close Hyperlink dialog after hiding) 2025-12-05 22:52:07 +03:00
1a5db2061e Merge pull request 'fix bug 78977' (#867) from fix/bug-78977 into develop 2025-12-05 17:23:57 +00:00
1aa7ad26b9 fix bug 78977 2025-12-05 18:30:58 +03:00
be5c7c2fbd [PDF] Fix adding link to page view 2025-12-05 18:03:42 +03:00
da878d4933 Disable tree view component 2025-12-05 17:44:19 +03:00
cfcf4cd473 Fix button lock for external charts 2025-12-05 16:35:31 +03:00
e2d09952b6 Merge pull request 'fix/bug-55709' (#865) from fix/bug-55709 into develop 2025-12-05 12:32:49 +00:00
144f31fa80 fix 2025-12-05 15:48:28 +03:00
30ba9186db [SSE] Support delimiters array for text to columns dialog 2025-12-05 14:25:43 +03:00
5bcf7b35f6 Fix blocking, positioning, and selection of tooltip translation, as well as updating item in the drop-down menu. 2025-12-05 12:41:07 +03:00
f18c887344 Merge pull request 'release/v9.2.0' (#864) from release/v9.2.0 into develop 2025-12-04 20:19:30 +00:00
712d55526f fixed the translation variable 2025-12-04 18:47:29 +03:00
616220f286 [PDF] Edit link annotation 2025-12-04 16:57:57 +03:00
0b6a8ad8e8 [main] fix bug 59611 2025-12-04 00:48:50 +03:00
2566081bc3 Merge branch 'fix/bug-78627' into develop 2025-12-03 18:31:51 +03:00
bdf4ace7bd Update translation 2025-12-03 17:39:37 +03:00
efd1fd79f5 fix bug 72793 2025-12-02 17:02:34 +03:00
9b1ff04536 Merge pull request 'fix/bug-37658' (#862) from fix/bug-37658 into develop 2025-12-02 13:15:00 +00:00
b770aecf83 [common] Fix comment 2025-12-02 00:59:29 +03:00
74254d9a98 [common] Set autoPosOnResize prop for protecred file dialog 2025-12-01 16:49:49 +03:00
9922ae3fcf Merge pull request 'fix/bug-73063' (#857) from fix/bug-73063 into develop 2025-11-30 20:39:29 +00:00
c80ca730c7 Fix highlighting search results when search bar is visible 2025-11-28 21:45:08 +03:00
063b297861 Fix Bug 77892 2025-11-28 21:42:52 +03:00
9005026353 Merge pull request 'Added 'none' item for error bars' (#860) from fix/btnChart into develop 2025-11-28 17:43:15 +00:00
9ceb7c0eb0 Merge pull request 'feature/header-footer-tab' (#858) from feature/header-footer-tab into develop 2025-11-28 17:36:53 +00:00
59714ba7b1 connected radiobox 2025-11-28 20:28:43 +03:00
3d66bdcbf9 Fix rev.1f71500 (Change max height for the comments popover) 2025-11-28 19:57:27 +03:00
43df04f827 [PDF] Fix adding link 2025-11-28 13:55:20 +03:00
e482e57462 macros translates 2025-11-28 02:52:57 +03:00
e305e7e83b delete redundant 2025-11-28 02:48:49 +03:00
843260200f commented header settings 2025-11-28 02:27:20 +03:00
4c3d4e4ecb fix 2025-11-28 02:27:20 +03:00
2dafda2cc1 refactor 2025-11-28 02:27:20 +03:00
c09809d3b0 added image, date, field insert btns 2025-11-28 02:27:20 +03:00
b6ebccdb9b fixed cmb focus 2025-11-28 02:27:20 +03:00
8860fd0b0a locks refactor 2025-11-28 02:27:19 +03:00
764f94e64a removed redundant 2025-11-28 02:27:19 +03:00
729a604af0 refactoring 2025-11-28 02:27:19 +03:00
cd05c7cf5c btn-close-master icon rename to btn-close-tab 2025-11-28 02:27:19 +03:00
6b1017b4e0 updated icons 2025-11-28 02:27:19 +03:00
1910b88786 refactor 2025-11-28 02:27:19 +03:00
ce51c7b8e3 page numbering ejecting in button 2025-11-28 02:27:19 +03:00
8478930618 [icons] upload 2025-11-28 02:27:18 +03:00
730665a744 rebuilt headerfooter btn and page number btn 2025-11-28 02:26:13 +03:00
25a6cb344e fixed view mode 2025-11-28 02:18:39 +03:00
1df781ac24 merge develop 2025-11-28 02:16:22 +03:00
7308737d6a modal 2025-11-28 01:58:45 +03:00
3d89ed327b base sources 2025-11-28 01:58:45 +03:00
8f767def0a Added 'none' item for error bars 2025-11-27 19:14:03 +03:00
ab6bd89de1 [PDF] Fix adding link to page view 2025-11-27 15:33:05 +03:00
d0dcf5be59 [PDF] Change adding link 2025-11-27 15:10:50 +03:00
922bd1622c Merge pull request '[common] Fix bug 49094' (#856) from fix/bug-49094 into develop 2025-11-27 11:20:16 +00:00
e660504bed Merge pull request '[DE] Fix bug 66717' (#855) from fix/bug-66717 into develop 2025-11-27 11:14:34 +00:00
45bae1cce5 [wopi] Expand error message; for bug 77544 2025-11-26 21:58:40 +00:00
64c97b18e8 commented header settings 2025-11-27 00:42:56 +03:00
4e948eaacb [PDF] Set link to page view 2025-11-26 23:25:33 +03:00
ad67511a31 [PDF] Fix hot key for adding hyperlink (use hot key only for shape/table) 2025-11-26 20:43:09 +03:00
01fdbf392d [PDF] Add link annotation 2025-11-26 20:30:32 +03:00
ada71636d9 fix 2025-11-26 13:46:55 +03:00
6f68ed681c [PDF] fix horizontal alignment on the right edge 2025-11-26 11:06:28 +03:00
11a3f03d66 refactor 2025-11-25 18:46:56 +03:00
0719b1b3ab fix bug 55709 2025-11-25 18:46:22 +03:00
575ab7d724 added image, date, field insert btns 2025-11-25 18:40:46 +03:00
4233a30d72 [common] Add autoPosOnResize prop for window component 2025-11-25 14:27:58 +03:00
ffefe0fad5 [icons] upload 2025-11-25 15:57:50 +05:00
a129423627 Merge pull request 'for bug 58517' (#782) from fix/function-hint into develop 2025-11-24 12:57:01 +00:00
d4e9ee9015 Fix function argument separator display 2025-11-24 15:54:37 +03:00
12c3aa825b Merge pull request 'fix/bug77529' (#848) from fix/bug77529 into develop 2025-11-24 11:48:05 +00:00
8fc2e1ede7 [DE] Fix bug 66717 2025-11-24 11:55:37 +03:00
c1ab677b75 Merge pull request 'fix/bug-70456' (#854) from fix/bug-70456 into develop 2025-11-24 08:48:52 +00:00
f1635618ca [common] Fix bug 49094 2025-11-24 10:42:38 +03:00
b257df4487 Merge pull request 'Fix error dialog when id is a string' (#852) from fix/plugin-error into develop 2025-11-21 20:58:50 +00:00
519bb34dfa Fix error dialog when id is a string 2025-11-21 23:05:29 +03:00
397f8bf445 Fix long link name in the SynchronizeTip component 2025-11-21 21:07:02 +03:00
4682f4746b [SSE] Show warning for unsupported solver constraints 2025-11-21 20:26:03 +03:00
20a224eea2 Merge pull request 'fix bug 70358' (#851) from fix/bug-70358 into develop 2025-11-21 16:10:14 +00:00
8f73af3133 Bug 78627 2025-11-21 17:43:48 +03:00
4ca7aaffd6 fix bug 70358 2025-11-21 16:31:33 +03:00
3919988130 Merge pull request 'add-redact-text-icon' (#849) from fix/add-redact-text-icon into develop 2025-11-21 13:23:54 +00:00
4d235ad893 [DE] For bug 78627: show warning if copying is disabled 2025-11-21 15:38:35 +03:00
195b81ba50 rename big redact icons 2025-11-21 13:00:07 +03:00
8a23329003 set redact icon 2025-11-21 12:11:13 +03:00
891e77c012 [icons] upload 2025-11-21 11:50:20 +05:00
68bee45526 fix 2025-11-21 02:16:41 +03:00
7d87b8dc73 [PDF] Hide opacity for redact color 2025-11-20 19:33:52 +03:00
a326c19ce4 fixed cmb focus 2025-11-20 17:36:10 +03:00
39629d2a77 fixed disabling redact search 2025-11-20 16:41:31 +03:00
6fb86820f8 Merge pull request 'fix bug 77633' (#840) from fix/bug-77633 into develop 2025-11-20 13:06:35 +00:00
956eeb0471 Merge pull request 'fix/mobile-draw' (#846) from fix/mobile-draw into develop 2025-11-20 13:05:50 +00:00
1e049d5d54 locks refactor 2025-11-20 16:04:58 +03:00
fc596803be Fix redact button in annotation panel 2025-11-20 15:31:22 +03:00
81a4fbbd3b Merge branch 'develop' into fix/bug-70456 2025-11-20 14:23:52 +03:00
3e8d436920 Merge pull request 'fix/bug78234' (#847) from fix/bug78234 into develop 2025-11-20 09:36:26 +00:00
61942a0f26 Merge pull request 'fix: add static styles preload for icons' (#842) from fix/bug-77010-rev into develop 2025-11-20 08:10:00 +00:00
f98a55c582 refactor 2025-11-20 03:48:25 +03:00
47eff2849a Fix bug 77529 2025-11-20 03:42:02 +03:00
14f06f003f removed redundant 2025-11-20 02:31:41 +03:00
435e49ae55 fixed set tab for the rest redactors 2025-11-20 02:27:17 +03:00
04568588fc refactoring 2025-11-20 02:05:26 +03:00
3195196452 For bug 70456 2025-11-20 00:02:25 +03:00
441c196b4f fmt 2025-11-20 01:46:29 +05:00
15e0c2aab4 fix: color picker layout, small touch targets, and missing selection outlines 2025-11-20 01:45:43 +05:00
a13c5a16ef Validate solver settings 2025-11-19 22:14:19 +03:00
b1258a52da chore: decompose draw functionality 2025-11-19 22:21:27 +05:00
a45d354d09 Fix styles 2025-11-19 20:20:28 +03:00
adfee4cb28 fixed set tab 2025-11-19 15:54:42 +03:00
80f217b77c Merge pull request 'release/v9.2.0' (#844) from release/v9.2.0 into develop 2025-11-19 10:29:49 +00:00
9cbfab5e13 fix bug 73063 2025-11-19 02:17:08 +05:00
c4dfefec4a Merge pull request 'Fix bug 78240' (#843) from fix/bug78240 into develop 2025-11-18 19:39:15 +00:00
847d04ea65 fix: add static styles preload for icons 2025-11-18 23:24:01 +05:00
206e99d8a3 [SSE] Show trial solver solution dialog 2025-11-18 19:34:56 +03:00
b8a862334d Fix bug 78240 2025-11-18 17:46:48 +03:00
6c3624e697 added redact btn for selected text 2025-11-18 17:21:09 +03:00
c4f24b6461 [common] for bug 78494 2025-11-18 13:47:55 +00:00
e2f9247670 [common] Rename shortcuts modifier keys for macos 2025-11-18 14:43:14 +03:00
b3b90b74f9 fix bug 77633 2025-11-18 13:51:11 +03:00
ca31b597c8 [SSE] Validate range 2025-11-18 13:20:15 +03:00
9090f2af01 [SSE] Hide solver options 2025-11-18 12:53:45 +03:00
c43bddf2c3 [SSE] Add solver result dialog 2025-11-17 23:22:08 +03:00
b6a1b71f3c Fix Bug 63300 2025-11-14 16:32:17 +03:00
b7d96a14b3 [PDF] Enable adding link annotation 2025-11-13 12:55:08 +03:00
1fced0e9a7 btn-close-master icon rename to btn-close-tab 2025-11-07 12:16:14 +03:00
d20a822069 [common] fix sprites generating 2025-11-07 01:25:40 +03:00
b81e2b6c53 updated icons 2025-11-07 00:26:00 +03:00
9271dae570 refactor 2025-11-06 23:51:10 +03:00
eced64036a page numbering ejecting in button 2025-11-06 23:48:23 +03:00
8aa0be0f74 Merge pull request 'Fix bug 72957' (#738) from fix/bug72957 into develop 2025-11-05 13:36:28 +00:00
9a3d9bde8f Merge branch 'develop' into fix/bug72957 2025-11-05 16:35:43 +03:00
a24d74cd6b Merge pull request 'fix/color-token' (#814) from fix/color-token into develop 2025-11-05 13:28:14 +00:00
52b57b3b5d Merge branch 'release/v9.2.0' into develop 2025-11-05 16:26:13 +03:00
36b7ffd9b3 fix encoding 2025-11-05 16:24:26 +04:00
7a763b7bce [icons] upload 2025-10-31 13:47:20 +05:00
fe2771c1c9 rebuilt headerfooter btn and page number btn 2025-10-30 18:25:22 +03:00
e3ad4fd35a refactoring selected tabs 2025-10-30 17:16:49 +04:00
5c28e5673e fix tabcolor 2025-10-29 12:38:52 +04:00
2509b59c70 fixed view mode 2025-10-29 02:33:34 +03:00
bae989461f refactor 2025-10-29 01:53:12 +03:00
6f6088be7d Recovering a deleted token 2025-10-28 14:18:02 +03:00
e2a6c0821e Merge branch 'develop' into fix/bug-71853 2025-10-28 14:46:42 +04:00
b49cfd696e Refactoring 2025-10-28 13:25:05 +03:00
a32589fcae rename color event 2025-10-28 13:50:37 +04:00
97298ebcfb modal 2025-10-27 23:25:35 +03:00
62f43d1c27 fix 2025-10-27 19:18:05 +03:00
a0f06dc51c Removing unused color tokens 2025-10-27 17:39:38 +03:00
cbedb841e9 [SSE] refactoring 2025-10-27 14:50:07 +03:00
e691fb9e3f Merge branch 'develop' into feature/header-footer-tab 2025-10-26 14:41:35 +03:00
733b8c36a0 base sources 2025-10-26 14:40:38 +03:00
bf776d5d99 Merge pull request 'feature/print-preview-for-visio' (#799) from feature/print-preview-for-visio into develop 2025-10-23 22:33:25 +00:00
9c912cc86d Merge branch 'fix/bug-71853' of https://git.onlyoffice.com/ONLYOFFICE/web-apps into fix/bug-71853 2025-10-23 16:06:21 +04:00
03b570273c added fireEvents for toolbar 2025-10-23 16:06:11 +04:00
d2c229b4f7 [icons] upload 2025-10-23 15:59:32 +05:00
d94439fe5c Merge branch 'fix/table-settings-cut' into develop 2025-10-22 19:36:33 +03:00
6a14300e1b fix events 2025-10-22 18:27:57 +04:00
3ec67e9a4a Revert unintended changes for build 2025-10-21 14:05:37 +03:00
9870acd80a [VE] Add translations 2025-10-21 13:46:31 +03:00
6182070a40 Merge pull request 'hotfix/v9.2.0' (#796) from hotfix/v9.2.0 into develop 2025-10-20 14:54:55 +00:00
bed677d913 [VE] Add print preview 2025-10-20 14:36:53 +03:00
2dad912aee fix bug 71853 2025-10-20 14:05:37 +04:00
26c58e1a88 cut rest 2025-10-19 18:10:12 +03:00
d13168d310 Merge pull request 'fix/plugin-svg-icon' (#791) from fix/plugin-svg-icon into develop 2025-10-17 14:35:45 +00:00
95c51a4358 Fix 2025-10-17 17:37:17 +03:00
5a966c25c6 Merge pull request 'release/v9.1.0' (#790) from release/v9.1.0 into develop 2025-10-17 14:09:30 +00:00
76a5e3fbc5 added other options 2025-10-17 17:00:17 +04:00
3cbea7cfd7 cut table settings 2025-10-17 14:11:32 +03:00
10c6f9b27a Fix background plugins menu 2025-10-16 23:22:27 +03:00
d6ec082fd2 Fix solver dialog 2025-10-16 15:46:34 +03:00
29827f46ad added row&columns size 2025-10-16 15:38:48 +04:00
27a16ec72f Fix solving method dialog 2025-10-16 13:56:24 +03:00
342454a5f2 fix: second navbar on page load 2025-10-16 02:49:58 +05:00
0fc67e745b [SSE] Add solving method options 2025-10-16 00:07:29 +03:00
470e442ec2 [SSE] Fix loading for small browser height 2025-10-15 16:35:23 +03:00
8ca6b5190a Use constraint dialog 2025-10-15 13:56:17 +03:00
acd6e8753f [SSE] Edit solver constraints 2025-10-15 00:11:16 +03:00
a556ac2312 Add constraint dialog 2025-10-14 19:32:05 +03:00
b2be36ca88 Merge pull request 'fix bug 75543' (#721) from fix/bug-75543 into develop 2025-10-14 10:48:41 +00:00
220f3b8f05 fix statusbar 2025-10-14 14:09:58 +04:00
303f4f6ad2 added template 2025-10-14 13:13:07 +04:00
a93e9923fc added show&hide in format 2025-10-14 13:11:16 +04:00
8b3f444c79 Use svg in plugins icons 2025-10-13 23:29:08 +03:00
abfcbb8964 for bug 58517 2025-10-10 12:36:48 +03:00
7475de852e Merge pull request 'fix/bug-72987' (#771) from fix/bug-72987 into develop 2025-10-09 19:49:34 +00:00
fbdb64db9c Merge pull request 'fix bug 58517' (#734) from fix/bug-58517 into develop 2025-10-09 15:15:57 +00:00
ea8731a02e Merge pull request 'release/v9.1.0' (#779) from release/v9.1.0 into develop 2025-10-09 12:34:56 +00:00
1d38bbb5d5 Merge pull request 'fix bug 62823' (#760) from fix/bug-62823 into develop 2025-10-09 10:45:39 +00:00
a9763efcc1 fix users icon 2025-10-09 14:31:40 +04:00
c1adfe6452 Merge pull request 'release/v9.1.0' (#773) from release/v9.1.0 into develop 2025-10-09 09:31:55 +00:00
3c343f2eb9 fix icons 2025-10-08 16:46:09 +04:00
bde03b108f fix bug 72987 2025-10-08 04:43:39 +05:00
7619524e77 added text formating icons 2025-10-07 16:54:50 +04:00
1c4ec7a3e2 Merge pull request 'fix bug 59509' (#640) from fix/bug-59509 into develop 2025-10-07 08:31:48 +00:00
e218c6512e Merge pull request 'fix bug 60393' (#747) from fix/bug-60393 into develop 2025-10-06 15:54:21 +00:00
fd9a76569a rename props 2025-10-06 17:00:27 +04:00
de2731a0fa fix bug 60393 2025-10-03 18:34:07 +04:00
1551d5ad52 added statusbar rtl direction 2025-10-02 15:03:41 +04:00
762f64e4c3 Fix Bug 76259 2025-10-01 20:41:25 +03:00
f0ecfc6134 Fix bug 72957 2025-10-01 17:41:07 +03:00
774c8f668b [SSE] Don't open menu File when entering the formula 2025-10-01 17:11:12 +03:00
9459ab5f19 fix bug 58517 2025-09-30 18:04:45 +03:00
c4d9b958ca Merge pull request 'fix/comments-layout' (#722) from fix/comments-layout into develop 2025-09-25 12:37:38 +00:00
3f33ac572d Fix theme color 2025-09-25 12:46:49 +03:00
9d2d4b331b fix bug 75543 2025-09-25 13:08:05 +04:00
bca030ff65 fix: added timer clearing 2025-09-25 11:40:43 +03:00
b0e2f0f5a0 Update comment style 2025-09-24 16:26:19 +03:00
6128a7c75f Merge branch 'feature/text-direction' into develop 2025-09-23 23:09:00 +03:00
e006575a4a Merge pull request 'release/v9.1.0' (#717) from release/v9.1.0 into develop 2025-09-23 18:58:32 +00:00
a482823f69 replace numbers 2025-09-23 17:43:57 +04:00
3d58400f48 Merge pull request 'release/v9.1.0' (#714) from release/v9.1.0 into develop 2025-09-23 11:56:26 +00:00
507376710d fix smart art direction 2025-09-23 13:10:07 +04:00
dadcdfbb63 [comments] Change highlight colors 2025-09-22 19:51:44 +03:00
893fc88f5b fix layout issues 2025-09-19 15:41:53 +04:00
36c034cac3 for bug 59509 2025-09-16 15:50:14 +03:00
ab475b37fe [SSE] Show constraints for solver 2025-09-10 18:17:50 +03:00
97b678d681 fix paragraphAlign on rtl mode 2025-09-10 16:19:44 +04:00
ac951942a6 added doc textDirection 2025-09-10 13:45:44 +04:00
0a07c18ea4 added cell textDirection on shape 2025-09-09 19:10:35 +04:00
b22a5c3ef8 Merge pull request 'added duplicate in locale' (#664) from feature/slide-context-menu into develop 2025-09-09 11:31:35 +00:00
44afe9a85b fix cell textDirection icon 2025-09-09 15:01:54 +04:00
78c88ee284 fix slide storeTextSettings 2025-09-09 11:25:48 +04:00
1b3d30102d added rtl on cell spreadsheet 2025-09-08 17:03:54 +04:00
123c3367c8 fix text orientation 2025-09-08 13:11:31 +04:00
74f7ce0489 added rtl text direction in presentation 2025-09-05 15:53:39 +04:00
a0a44c9950 [SSE] Load not-supported solver 2025-09-04 19:46:10 +03:00
accd595945 [SSE] Add solver dialog 2025-09-04 19:21:02 +03:00
152ad48063 added duplicate in locale 2025-09-03 14:18:01 +04:00
c1e814f6d1 Merge pull request 'added loop slideshow toggle' (#654) from feature/loop-slideshow into develop 2025-09-01 12:10:22 +00:00
1b5b12bf2d refactor use isLoopSlideshow property 2025-09-01 13:50:42 +04:00
52524272c4 fix getLoopSlideshow 2025-09-01 13:42:54 +04:00
252e4db240 added loop slideshow toggle 2025-08-29 16:06:45 +04:00
c2ce352936 Merge pull request 'feature/reset-background' (#648) from feature/reset-background into develop 2025-08-28 19:00:51 +00:00
486cc79fa8 fix reset background btn 2025-08-28 15:38:02 +04:00
d677889709 refactoring 2025-08-27 23:26:13 +03:00
77e41ef6c3 added reset background btn 2025-08-27 18:43:51 +04:00
33becbde04 Merge pull request 'feature/hyphenation-settings' (#641) from feature/hyphenation-settings into develop 2025-08-26 12:14:47 +00:00
436892ab95 fix store hyphenation 2025-08-26 13:40:04 +04:00
ef5c5bf5e6 added hyphenation toggle 2025-08-25 19:11:05 +04:00
eb6b574da1 fix 2025-08-25 13:37:04 +03:00
b9f0ba52fa fix bug 59509 2025-08-25 11:13:57 +03:00
626e42faa7 Fix editing active comments 2025-08-15 21:45:47 +03:00
8846bea219 Show hover/active comments state 2025-08-15 18:34:34 +03:00
1af1112847 [PDF] Hide changes for history 2024-09-27 14:13:43 +03:00
c1cce5d9f9 [PDF] Open current file version 2024-09-26 12:45:25 +03:00
ef4d741b0a [PDF] Add translation 2024-09-25 23:15:18 +03:00
5c1d844fb6 [PDF] Show collaboration tab 2024-09-25 23:09:24 +03:00
96e3172b02 [PDF] Show version history 2024-09-25 20:57:38 +03:00
1045 changed files with 35536 additions and 9127 deletions

View File

@ -119,7 +119,7 @@ jobs:
env:
URI: ${{steps.tag-dir.outputs.URI}}
run: |
aws cloudfront create-invalidation \
--distribution-id ${{ secrets.AWS_DISTRIBUTION_ID }} \
--paths \
"${URI}/*"
API_STATUS=$(aws apigateway test-invoke-method --rest-api-id ${{ secrets.AWS_REST_API_ID }} --resource-id "${{ secrets.AWS_RESOURCE_ID }}" \
--http-method PUT --path-with-query-string "/prod/download-oo-com" --body "$(jq -c -n '.paths = $ARGS.positional' --args "${URI}/*")" \
--region us-east-1 --query 'status' --output text || :)
echo "API Gateway test-invoke status: ${API_STATUS:-<failed>}"

View File

@ -513,7 +513,7 @@
if (typeof _config.document.fileType === 'string' && _config.document.fileType != '') {
_config.document.fileType = _config.document.fileType.toLowerCase();
var type = /^(?:(xls|xlsx|ods|csv|gsheet|xlsm|xlt|xltm|xltx|fods|ots|xlsb|sxc|et|ett|numbers)|(pps|ppsx|ppt|pptx|odp|gslides|pot|potm|potx|ppsm|pptm|fodp|otp|sxi|dps|dpt|key|odg)|(pdf|djvu|xps|oxps)|(doc|docx|odt|gdoc|txt|rtf|mht|htm|html|mhtml|epub|docm|dot|dotm|dotx|fodt|ott|fb2|xml|oform|docxf|sxw|stw|wps|wpt|pages|hwp|hwpx|md|hml)|(vsdx|vssx|vstx|vsdm|vssm|vstm))$/
var type = /^(?:(xls|xlsx|ods|csv|tsv|gsheet|xlsm|xlt|xltm|xltx|fods|ots|xlsb|sxc|et|ett|numbers)|(pps|ppsx|ppt|pptx|odp|gslides|pot|potm|potx|ppsm|pptm|fodp|otp|sxi|dps|dpt|key|odg)|(pdf|djvu|xps|oxps)|(doc|docx|odt|gdoc|txt|rtf|mht|htm|html|mhtml|epub|docm|dot|dotm|dotx|fodt|ott|fb2|xml|oform|docxf|sxw|stw|wps|wpt|pages|hwp|hwpx|md|hml)|(vsdx|vssx|vstx|vsdm|vssm|vstm))$/
.exec(_config.document.fileType);
if (!type) {
window.alert("The \"document.fileType\" parameter for the config object is invalid. Please correct it.");
@ -1108,7 +1108,7 @@
isForm = false;
if (config.document) {
if (typeof config.document.fileType === 'string')
type = /^(?:(pdf)|(djvu|xps|oxps)|(xls|xlsx|ods|csv|xlst|xlsy|gsheet|xlsm|xlt|xltm|xltx|fods|ots|xlsb|numbers)|(pps|ppsx|ppt|pptx|odp|pptt|ppty|gslides|pot|potm|potx|ppsm|pptm|fodp|otp|key|odg)|(oform|docxf)|(vsdx|vssx|vstx|vsdm|vssm|vstm))$/
type = /^(?:(pdf)|(djvu|xps|oxps)|(xls|xlsx|ods|csv|tsv|xlst|xlsy|gsheet|xlsm|xlt|xltm|xltx|fods|ots|xlsb|numbers)|(pps|ppsx|ppt|pptx|odp|pptt|ppty|gslides|pot|potm|potx|ppsm|pptm|fodp|otp|key|odg)|(oform|docxf)|(vsdx|vssx|vstx|vsdm|vssm|vstm))$/
.exec(config.document.fileType);
if (config.document.permissions)

View File

@ -287,6 +287,11 @@ div {
}
var connectEditor = function () {
var statusCode = "<%= typeof statusCode !== 'undefined' ? statusCode : '' %>";
if (statusCode) {
handleWopiError(statusCode);
return;
}
fileInfo = JSON.parse(document.getElementById('fileInfoJsonData').getAttribute('data-json'));
@ -438,6 +443,55 @@ div {
document.body.appendChild(newDiv);
};
/**
* Handle WOPI error status and show appropriate error message
* @param {number|string} statusCode - HTTP status code
* @returns {boolean} - Returns true if error was handled, false if no error
*/
var handleWopiError = function (statusCode) {
if (!statusCode) {
return false;
}
const status = parseInt(statusCode, 10);
// WOPI spec-compliant error messages
// https://learn.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/rest/files/checkfileinfo#status-codes
var errorMessage;
switch (status) {
case 400:
errorMessage = 'Bad Request - malformed or invalid request';
break;
case 401:
errorMessage = 'Invalid access token';
break;
case 403:
errorMessage = 'Access forbidden';
break;
case 404:
errorMessage = 'Resource not found or user unauthorized';
break;
case 409:
errorMessage = 'Conflict - lock mismatch or file version conflict';
break;
case 412:
errorMessage = 'Precondition Failed - lock token mismatch';
break;
case 413:
errorMessage = 'Payload Too Large - file size exceeds limits';
break;
case 500:
errorMessage = 'Internal server error or invalid proof keys';
break;
case 501:
errorMessage = 'Not Implemented - operation not supported';
break;
case 507:
errorMessage = 'Insufficient Storage - not enough storage space';
break;
}
showError(errorMessage);
return true;
}
//https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
if (typeof Object.assign !== 'function') {
// Must be writable: true, enumerable: false, configurable: true

View File

@ -66,9 +66,9 @@
9: 'Tab',
12: 'Clear',
13: 'Enter',
16: 'Shift',
17: 'Ctrl',
18: 'Alt',
16: common.utils.isMac ? '⇧' : 'Shift',
17: common.utils.isMac ? '^' : 'Ctrl',
18: common.utils.isMac ? '⌥' : 'Alt',
19: 'Pause',
20: 'CapsLock',
27: 'Escape',
@ -84,7 +84,7 @@
44: 'PrintScreen',
45: 'Insert',
46: 'Delete',
91: 'Meta',
91: common.utils.isMac ? '⌘' : 'Meta',
93: 'ContextMenu',
96: "Num 0",
97: "Num 1",
@ -233,6 +233,10 @@
shortcuts[foundIndex].ascShortcut = copyAscShortcut;
}
}
if(actionsMap[actionType]) {
actionsMap[actionType].shortcuts = shortcuts.sort(_sortComparator);
}
}
};
@ -286,14 +290,48 @@
var _getAscShortcutKeys = function(ascShortcut) {
const keys = [];
ascShortcut.asc_IsCommand() && keys.push('⌘');
ascShortcut.asc_IsCtrl() && keys.push('Ctrl');
ascShortcut.asc_IsAlt() && keys.push('Alt');
ascShortcut.asc_IsShift() && keys.push('Shift');
ascShortcut.asc_IsCommand() && keys.push(_keyCodeToKeyName(91));
ascShortcut.asc_IsCtrl() && keys.push(_keyCodeToKeyName(17));
ascShortcut.asc_IsAlt() && keys.push(_keyCodeToKeyName(18));
ascShortcut.asc_IsShift() && keys.push(_keyCodeToKeyName(16));
keys.push(_keyCodeToKeyName(ascShortcut.asc_GetKeyCode()));
return keys;
};
var _sortComparator = function(first, second) {
const priorityModifierKeys = ['asc_IsCommand', 'asc_IsCtrl', 'asc_IsAlt', 'asc_IsShift'];
function getWeight(ascShortcut) {
// Search for the first modifier key
let keyIndex = priorityModifierKeys.length;
for (let i = 0; i < priorityModifierKeys.length; i++) {
if (ascShortcut[priorityModifierKeys[i]]()) {
keyIndex = i;
break;
}
}
if (keyIndex === priorityModifierKeys.length) return -1;
// Count extra modifier keys
let extras = 0;
for (let j = 0; j < priorityModifierKeys.length; j++) {
if (j !== keyIndex && ascShortcut[priorityModifierKeys[j]]()) extras++;
}
// weight = range for main key + “cost” of extra keys
return keyIndex * 100 + extras;
}
if (first.ascShortcut.asc_IsLocked() && !second.ascShortcut.asc_IsLocked()) return -1;
if (!first.ascShortcut.asc_IsLocked() && second.ascShortcut.asc_IsLocked()) return 1;
let wFirst = getWeight(first.ascShortcut);
let wSecond = getWeight(second.ascShortcut);
if (wFirst !== wSecond) return wFirst - wSecond;
return first.ascShortcut.asc_GetKeyCode() - second.ascShortcut.asc_GetKeyCode();
};
// Utils
var pairs = function(obj) {

View File

@ -41,6 +41,9 @@ Common.Locale = new(function() {
defLang = '{{DEFAULT_LANG}}',
currentLang = defLang,
_4letterLangs = ['pt-pt', 'zh-tw', 'sr-cyrl'];
if ( defLang[0] == '{' )
currentLang = defLang = 'en';
var _applyLocalization = function(callback) {
_clearRtl();

View File

@ -66,6 +66,7 @@ define([
INSERT: 45,
ZERO: 48,
EQUALITY_FF:61,
META: 91,
NUM_ZERO: 96,
NUM_PLUS: 107,
NUM_MINUS: 109,

View File

@ -142,7 +142,7 @@ define([
el.html(this.template(this.model.toJSON()));
el.addClass('item canfocused');
el.toggleClass('selected', this.model.get('selected') && this.model.get('allowSelected'));
el.toggleClass('selected', !!this.model.get('selected') && this.model.get('allowSelected'));
el.attr('tabindex', this.options.tabindex || 0);
el.attr('role', this.options.role ? this.options.role : 'listitem');
@ -220,7 +220,7 @@ define([
if (_.isUndefined(this.model.id))
return this;
var el = this.$el || $(this.el);
el.toggleClass('selected', this.model.get('selected') && this.model.get('allowSelected'));
el.toggleClass('selected', !!this.model.get('selected') && this.model.get('allowSelected'));
el.toggleClass('disabled', !!this.model.get('disabled'));
this.trigger('change', this, this.model);
@ -672,10 +672,11 @@ define([
});
}
this.attachKeyEvents();
if (this.disabled)
this.setDisabled(this.disabled);
this.attachKeyEvents();
this.lastSelectedRec = null;
this._layoutParams = undefined;
},
@ -989,7 +990,7 @@ define([
if (this.enableKeyEvents && this.handleSelect) {
var el = $(this.el).find('.inner').addBack().filter('.inner');
el.addClass('canfocused');
el.attr('tabindex', this.tabindex.toString());
el.attr('tabindex', (this.tabindex || 0).toString());
el.on((this.parentMenu && this.useBSKeydown) ? 'dataview:keydown' : 'keydown', _.bind(this.onKeyDown, this));
el.on((this.parentMenu && this.useBSKeydown) ? 'dataview:keyup' : 'keyup', _.bind(this.onKeyUp, this));
}
@ -1013,6 +1014,12 @@ define([
disabled = !!disabled;
this.disabled = disabled;
$(this.el).find('.inner').addBack().filter('.inner').toggleClass('disabled', disabled);
if (this.tabindex!==undefined) {
var el = $(this.el).find('.inner').addBack().filter('.inner');
disabled && (this.tabindex = el.attr('tabindex'));
el.attr('tabindex', disabled ? "-1" : this.tabindex);
}
},
isDisabled: function() {

View File

@ -82,7 +82,7 @@ define([
me.options.height = me.options.itemSize* this.options.minRows;
var rootEl = this.cmpEl;
me.borderColor = '#aaaaaa';
me.borderColor = Common.Utils.isIE ?'#000000' :Common.UI.Themes.currentThemeColor('--canvas-high-contrast');
me.fillColor = Common.Utils.isIE ?'#fff' :Common.UI.Themes.currentThemeColor('--background-normal');
me.borderColorHighlighted = Common.Utils.isIE ?'#bababa' :Common.UI.Themes.currentThemeColor('--border-preview-hover');
me.fillColorHighlighted = Common.Utils.isIE ?'#446995' :Common.UI.Themes.currentThemeColor('--background-accent-button');
@ -163,6 +163,7 @@ define([
changeColors: function (){
this.borderColor = Common.UI.Themes.currentThemeColor('--canvas-high-contrast');
this.fillColor = Common.UI.Themes.currentThemeColor('--background-normal');
this.borderColorHighlighted = Common.UI.Themes.currentThemeColor('--border-preview-hover');
this.fillColorHighlighted = Common.UI.Themes.currentThemeColor('--background-accent-button');

View File

@ -496,6 +496,14 @@ define([
render: function () {
Common.UI.MenuItem.prototype.render.call(this);
if (this.options.scaling !== false) {
var me = this;
me.cmpEl.attr('ratio', 'ratio');
me.cmpEl.on('app:scaling', function (e, info) {
me.applyScaling(info.ratio);
});
}
this.updateIcon();
Common.NotificationCenter.on('uitheme:changed', this.updateIcons.bind(this));
return this;
@ -508,7 +516,7 @@ define([
},
updateIcon: function() {
this.cmpEl && this.cmpEl.find('> a img').attr('src', this.iconImg).addClass('custom-icon');
this.cmpEl && this.cmpEl.find('img.menu-item-icon').attr('src', this.iconImg).addClass('custom-icon');
},
applyScaling: function (ratio) {

View File

@ -191,11 +191,10 @@ define([
setFolded: function(value) {
this.isFolded = value;
var me = this;
if ( this.isFolded ) {
if (!optsFold.$box) optsFold.$box = me.$el.find('.box-controls');
if (!optsFold.$box) optsFold.$box = me.$el.find('.box-controls');
if ( this.isFolded ) {
optsFold.$bar.addClass('folded z-clear').toggleClass('expanded', false);
optsFold.$bar.find('.tabs .ribtab').removeClass('active');
optsFold.$bar.on($.support.transition.end, function (e) {

View File

@ -64,7 +64,7 @@ define([
'<% } %>',
'</div>',
'<% if ( scope.showLink ) { %>',
'<div class="show-link"><label><%= scope.textLink %></label></div>',
'<div class="show-link"><label><span><%= scope.textLink %></span></label></div>',
'<% } %>',
'<% if ( scope.showButton ) { %>',
'<div class="btn-div"><%= scope.textButton %></div>',

View File

@ -302,8 +302,12 @@ define([
elem.addEventListener ? elem.addEventListener( type, fn, false ) : elem.attachEvent( "on" + type, fn );
};
var eventname=(/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';
addEvent(this.$bar[0], eventname, _.bind(this._onMouseWheel,this));
if (Common.Utils.isMac) {
this.$bar[0].addEventListener('wheel', _.bind(this._onMouseWheelThrottled, this));
} else {
var eventname=(/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';
addEvent(this.$bar[0], eventname, _.bind(this._onMouseWheel,this));
}
addEvent(this.$bar[0], 'dragstart', _.bind(function (event) {
event.dataTransfer.effectAllowed = 'copyMove';
}, this));
@ -367,6 +371,33 @@ define([
Common.NotificationCenter.trigger('hints:clear');
},
_onMouseWheelThrottled: function(e) {
var delta = (e.detail && -e.detail) || e.wheelDelta;
if (Math.abs(delta) < 10) {
return;
}
var now = Date.now();
if (this._lastWheelTime && now - this._lastWheelTime < 50) {
return;
}
this._lastWheelTime = now;
var hidden = this.checkInvisible(true);
if (delta < 0) {
if (hidden.last) {
this.setTabVisible('forward');
}
} else {
if (hidden.first) {
this.setTabVisible('backward');
}
}
Common.NotificationCenter.trigger('hints:clear');
},
onProcessMouse: function(data) {
if (data.type == 'mouseup' && this.dragging) {
var tab = this.getActive(true);

View File

@ -254,6 +254,8 @@ define([
},
onClickItem: function(view, record, e) {
if ( this.disabled ) return;
var btn = $(e.target);
if (btn && (btn.hasClass('tree-caret') || btn.hasClass('btn-tree-caret'))) {
var tip = view.$el.data('bs.tooltip');

View File

@ -158,6 +158,7 @@ define([
minheight: 0,
enableKeyEvents: true,
automove: true,
autoPosOnResize: 'none', //center, relative
transparentMask: false,
role: 'dialog'
};
@ -355,6 +356,9 @@ define([
top < topedge ? (top = topedge) : top > this.dragging.maxy && (top = this.dragging.maxy);
this.$window.css({left: left, top: top});
this.dragging.wasDragged = true;
this.initConfig.autoPosOnResize == 'relative' && _calcWindowPositionRatio.call(this);
}
}
@ -364,6 +368,35 @@ define([
}
}
function _onResizeWindow() {
if(this.initConfig.autoPosOnResize == 'center' && !this.dragging.wasDragged) {
this.setPosition();
} else if(this.initConfig.autoPosOnResize == 'relative' && this.windowPositionRatio) {
const documentGeometry = _readDocumetGeometry();
const newPos = {
x: documentGeometry.width * this.windowPositionRatio.left - (this.getWidth() / 2),
y: documentGeometry.height * this.windowPositionRatio.top - (this.getHeight() / 2),
};
this.setPosition(newPos.x, newPos.y);
}
if(this.initConfig.automove) {
_onResizeMove.call(this);
}
}
function _calcWindowPositionRatio(){
const documentGeometry = _readDocumetGeometry();
const windowCenter = {
left: this.getLeft() + this.getWidth() / 2,
top: this.getTop() + this.getHeight() / 2
};
this.windowPositionRatio = {
left: windowCenter.left / documentGeometry.width,
top: windowCenter.top / documentGeometry.height,
};
}
function _onResizeMove(){
var main_geometry = _readDocumetGeometry(),
main_width = main_geometry.width,
@ -659,7 +692,7 @@ define([
_.each(options.buttons, function(b){
if (typeof(b) == 'object') {
if (b.value !== undefined) {
var item = {value: b.value, text: b.caption, cls: 'auto' + ((b.primary || options.primary==b.value) ? ' primary' : '')};
var item = {value: b.value, text: b.caption, cls: 'auto' + ((b.primary || options.primary==b.value) ? ' primary' : '') + (b.cls ? ' ' + b.cls : '')};
b.id && (item.id = b.id);
newBtns.push(item);
}
@ -805,11 +838,13 @@ define([
}
$(document).on('keydown.' + this.cid, this.binding.keydown);
if(this.initConfig.automove){
this.binding.windowresize = _.bind(_onResizeMove, this);
if(this.initConfig.automove || this.initConfig.autoPosOnResize != 'none'){
this.binding.windowresize = _.bind(_onResizeWindow, this);
$(window).on('resize', this.binding.windowresize);
}
this.initConfig.autoPosOnResize == 'relative' && _calcWindowPositionRatio.call(this);
var me = this;
setTimeout(function () {
@ -860,7 +895,7 @@ define([
close: function(suppressevent) {
$(document).off('keydown.' + this.cid);
this.initConfig.automove && $(window).off('resize', this.binding.windowresize);
this.binding.windowresize && $(window).off('resize', this.binding.windowresize);
if ( this.initConfig.header ) {
this.$window.find('.header').off('mousedown', this.binding.dragStart);
}
@ -908,7 +943,7 @@ define([
hide: function() {
$(document).off('keydown.' + this.cid);
this.initConfig.automove && $(window).off('resize', this.binding.windowresize);
this.binding.windowresize && $(window).off('resize', this.binding.windowresize);
if (this.$window) {
if (this.initConfig.modal) {
var mask = _getMask(),

View File

@ -712,7 +712,7 @@ define([
if (model) {
this.collection.remove(model);
if (!silentUpdate) {
this.updateComments(true);
this.updateComments(true, undefined, undefined, true);
}
}
@ -940,8 +940,10 @@ define([
this.uids = _.clone(uids);
comments.push(comment);
if (!this._dontScrollToComment)
if (!this._dontScrollToComment) {
this.view.commentsView.clearActive();
this.view.commentsView.scrollToRecord(comment);
}
this._dontScrollToComment = false;
}
@ -962,6 +964,8 @@ define([
onApiHideComment: function (hint) {
var t = this;
this.view && this.view.commentsView && this.view.commentsView.clearActive();
if (this.getPopover()) {
if (this.isSelectedComment && hint) {
return;
@ -1041,7 +1045,8 @@ define([
}
this.getPopover().setLeftTop(posX, posY, leftX, undefined);
this.getPopover().moveMentions();
// if (this.isSelectedComment && (0 === _.difference(this.uids, uids).length)) {
//NOTE: click to sdk view ?
// if (this.api) {
@ -1084,16 +1089,18 @@ define([
// internal
updateComments: function (needRender, disableSort, loadText) {
updateComments: function (needRender, disableSort, loadText, isSaveScrollPos) {
var me = this;
me.updateCommentsTime = new Date();
me.disableSort = !!disableSort;
if (me.timerUpdateComments===undefined)
me.timerUpdateComments = setInterval(function(){
if ((new Date()) - me.updateCommentsTime>100) {
const scrollPos = me.view.commentsView.scroller.getScrollTop();
clearInterval(me.timerUpdateComments);
me.timerUpdateComments = undefined;
me.updateCommentsView(needRender, me.disableSort, loadText);
isSaveScrollPos && me.view.commentsView.scroller.scrollTop(scrollPos);
}
}, 25);
},

View File

@ -315,15 +315,14 @@ define([
this.backgroundPlugins.forEach(function (model) {
var modes = model.get('variations'),
icons = modes[model.get('currentVariation')].get('icons'),
parsedIcons = me.viewPlugins.parseIcons(icons),
icon_url = model.get('baseUrl') + parsedIcons['normal'],
guid = model.get('guid'),
isRun = _.indexOf(usedPlugins, guid) !== -1;
model.set('parsedIcons', parsedIcons);
var menuItem = new Common.UI.MenuItem({
model.set('parsedIcons', me.viewPlugins.parseIcons(icons));
var menuItem = new Common.UI.MenuItemCustom({
value: guid,
caption: model.get('name'),
iconImg: icon_url,
iconsSet: me.viewPlugins.iconsStr2IconsObj(icons),
baseUrl: model.get('baseUrl'), // icons have a relative path, so need to use the base url
template: _.template([
'<div id="<%= id %>" class="menu-item" <% if(!_.isUndefined(options.stopPropagation)) { %> data-stopPropagation="true" <% } %> >',
'<img class="menu-item-icon" src="<%= options.iconImg %>">',

View File

@ -167,10 +167,10 @@ define([
}
},
setMode: function(mode) {
setMode: function(mode, tabOptions) {
this.appConfig = mode;
this.popoverChanges = new Common.Collections.ReviewChanges();
this.view = this.createView('Common.Views.ReviewChanges', { mode: mode });
this.view = this.createView('Common.Views.ReviewChanges', { mode: mode, tabOptions: (tabOptions || {}) });
if (!!this.appConfig.sharingSettingsUrl && this.appConfig.sharingSettingsUrl.length || this.appConfig.canRequestSharingSettings) {
Common.Gateway.on('showsharingsettings', _.bind(this.changeAccessRights, this));

View File

@ -383,6 +383,7 @@ Common.UI.ScreenReaderFocusManager = new(function() {
turnOffHints = true;
_nextItem();
} else if (isNextLevel) {
if ($('.toolbar.folded').not('.expanded').length > 0) return;
var attr = '[data-hint="' + (_currentLevel + 1) + '"]';
if ($(_currentSection).find(attr).length === 0 || btn && $(btn.closest('.hint-section')).find(attr).filter(':visible').length === 0) return;
turnOffHints = true;

View File

@ -75,9 +75,9 @@ define([
9: 'Tab',
12: 'Clear',
13: 'Enter',
16: 'Shift',
17: 'Ctrl',
18: 'Alt',
16: Common.Utils.isMac ? '⇧' : 'Shift',
17: Common.Utils.isMac ? '^' : 'Ctrl',
18: Common.Utils.isMac ? '⌥' : 'Alt',
19: 'Pause',
20: 'CapsLock',
27: 'Escape',
@ -93,7 +93,7 @@ define([
44: 'PrintScreen',
45: 'Insert',
46: 'Delete',
91: 'Meta',
91: Common.Utils.isMac ? '⌘' : 'Meta',
93: 'ContextMenu',
96: "Num 0",
97: "Num 1",
@ -159,6 +159,7 @@ define([
ascShortcut: ascShortcut,
}
});
actionItem.shortcuts = actionItem.shortcuts.sort(this._sortComparator);
}
this._eventsTrigger();
@ -472,6 +473,9 @@ define([
shortcuts[foundIndex].ascShortcut = copyAscShortcut;
}
}
if(this.actionsMap[actionType]) {
this.actionsMap[actionType].shortcuts = shortcuts.sort(this._sortComparator);
}
}
},
@ -563,10 +567,10 @@ define([
_getAscShortcutKeys: function(ascShortcut) {
const keys = [];
ascShortcut.asc_IsCommand() && keys.push('⌘');
ascShortcut.asc_IsCtrl() && keys.push('Ctrl');
ascShortcut.asc_IsAlt() && keys.push('Alt');
ascShortcut.asc_IsShift() && keys.push('Shift');
ascShortcut.asc_IsCommand() && keys.push(this.keyCodeToKeyName(Common.UI.Keys.META));
ascShortcut.asc_IsCtrl() && keys.push(this.keyCodeToKeyName(Common.UI.Keys.CTRL));
ascShortcut.asc_IsAlt() && keys.push(this.keyCodeToKeyName(Common.UI.Keys.ALT));
ascShortcut.asc_IsShift() && keys.push(this.keyCodeToKeyName(Common.UI.Keys.SHIFT));
keys.push(this.keyCodeToKeyName(ascShortcut.asc_GetKeyCode()));
return keys;
},

View File

@ -218,8 +218,6 @@ define([
"highlight-header-button-hover",
"highlight-header-button-pressed",
"highlight-text-select",
"highlight-accent-button-hover",
"highlight-accent-button-pressed",
"highlight-toolbar-tab-underline-document",
"highlight-toolbar-tab-underline-spreadsheet",
"highlight-toolbar-tab-underline-presentation",
@ -234,12 +232,10 @@ define([
"border-toolbar",
"border-divider",
"border-regular-control",
"border-toolbar-button-hover",
"border-preview-hover",
"border-preview-select",
"border-control-focus",
"border-color-shading",
"border-error",
"border-contrast-popover",
"text-normal",
@ -257,10 +253,7 @@ define([
"icon-normal",
"icon-normal-pressed",
"icon-inverse",
"icon-toolbar-header",
"icon-notification-badge",
"icon-contrast-popover",
"icon-success",
"canvas-background",
@ -277,7 +270,6 @@ define([
"canvas-high-contrast",
"canvas-high-contrast-disabled",
"canvas-cell-border",
"canvas-cell-title-background",
"canvas-cell-title-background-hover",
"canvas-cell-title-background-selected",
@ -292,8 +284,6 @@ define([
"canvas-dark-cell-title-border",
"canvas-dark-cell-title-border-hover",
"canvas-dark-cell-title-border-selected",
"canvas-dark-content-background",
"canvas-dark-page-border",
"canvas-scroll-thumb",
"canvas-scroll-thumb-hover",
@ -313,8 +303,6 @@ define([
"canvas-sheet-view-cell-background-pressed",
"canvas-sheet-view-cell-title-label",
"canvas-freeze-line-1px",
"canvas-freeze-line-2px",
"canvas-select-all-icon",
"canvas-anim-pane-background",
@ -610,9 +598,9 @@ define([
const refresh_theme = function (force, caller) {
if ( force || Common.localStorage.getItem('ui-theme-id') != window.uitheme.id ) {
const theme_id = Common.localStorage.getItem('ui-theme-id');
let theme_id = Common.localStorage.getItem('ui-theme-id');
if ( theme_id ) {
if ( theme_id && (force && (theme_id = 'theme-system')) ) {
apply_theme.call(this, theme_id);
Common.NotificationCenter.trigger('uitheme:changed', theme_id, caller);
}

View File

@ -1,5 +1,5 @@
<% if (!hide && !filtered) { %>
<div id="<%= id %>" class="user-comment-item">
<div id="<%= id %>" class="user-comment-item <% if (last) { %> last-item <% } %>">
<!-- comment block -->
@ -121,8 +121,5 @@
<div class="lock-area"></div>
<div class="lock-author"><%=lockuserid%></div>
<% } %>
<% if (!last) { %>
<div class="separator-cmt"></div>
<% } %>
</div>
<% } %>

View File

@ -1393,7 +1393,7 @@ define([], function () {
theme-type - {string} theme type (light|dark|common)
theme-name - {string} the name of theme
state - {string} state of icons for different situations (normal|hover|active)
scale - {string} list of avaliable scales (100|125|150|175|200|default|extended)
scale - {string} list of avaliable scales (100|125|150|175|200|default|*)
extension - {string} use it after symbol "." (png|jpeg|svg)
Example: "resources/%theme-type%(light|dark)/icon%state%(normal|hover)%scale%(default).%extension%(png)"
@ -1560,7 +1560,7 @@ define([], function () {
bestUrl;
for (var key in current) {
if (current.hasOwnProperty(key)) {
if (key == 'default') {
if (key == 'default' || key == '*') {
defUrl = current[key];
} else if (!isNaN(parseInt(key))) {
currentDistance = Math.abs(ratio - parseInt(key));

View File

@ -176,6 +176,9 @@ define([
}
}
}
},
clearActive: function() {
this.cmpEl && this.cmpEl.find('.item.active').removeClass('active');
}
}
})());
@ -197,6 +200,9 @@ define([
me.update();
}
picker.clearActive();
item.$el && item.$el.addClass('active');
btn = $(e.target);
if (btn) {
showEditBox = record.get('editText');
@ -231,9 +237,11 @@ define([
me.hookTextBox();
}
}
me.fireEvent('comment:show', [commentId, false]);
} else if (btn.hasClass('btn-delete')) {
if (!_.isUndefined(replyId)) {
me.fireEvent('comment:removeReply', [commentId, replyId]);
me.fireEvent('comment:show', [commentId, false]);
} else {
me.fireEvent('comment:remove', [commentId]);
Common.NotificationCenter.trigger('edit:complete', me);
@ -252,6 +260,7 @@ define([
picker.autoScrollToEditButtons();
picker.setFocusToTextBox();
me.fireEvent('comment:show', [commentId, false]);
} else if (btn.hasClass('btn-reply', false)) {
if (showReplyBox) {
me.fireEvent('comment:addReply', [commentId, picker.getActiveTextBoxVal()]);
@ -259,10 +268,11 @@ define([
readdresolves();
}
me.fireEvent('comment:show', [commentId, false]);
} else if (btn.hasClass('btn-close', false)) {
me.fireEvent('comment:closeEditing', [commentId]);
me.fireEvent('comment:show', [commentId, false]);
} else if (btn.hasClass('btn-inner-edit', false)) {
if (!_.isUndefined(me.commentsView.reply)) {
me.fireEvent('comment:changeReply', [commentId, me.commentsView.reply, picker.getActiveTextBoxVal()]);
@ -274,13 +284,14 @@ define([
me.fireEvent('comment:closeEditing');
readdresolves();
me.fireEvent('comment:show', [commentId, false]);
} else if (btn.hasClass('btn-inner-close', false)) {
me.fireEvent('comment:closeEditing');
me.commentsView.reply = undefined;
readdresolves();
me.fireEvent('comment:show', [commentId, false]);
} else if (btn.hasClass('btn-resolve', false)) {
var tip = btn.data('bs.tooltip');
if (tip) tip.dontShow = true;
@ -288,6 +299,7 @@ define([
me.fireEvent('comment:resolve', [commentId]);
readdresolves();
me.fireEvent('comment:show', [commentId, false]);
} else if (!btn.hasClass('msg-reply') &&
!btn.hasClass('btn-resolve')) {
var isTextSelected = false;

View File

@ -1197,7 +1197,7 @@ define([
this.fileExtention = idx>0 ? this.documentCaption.substring(idx) : '';
this.isModified && (value += '*');
this.readOnly && (value += ' (' + this.textReadOnly + ')');
if ( $labelDocName ) {
if ( $labelDocName && !this.withoutExt ) {
this.setDocTitle( value );
}
return value;

View File

@ -67,7 +67,7 @@ define([
}, options);
this.txtOpenFile = options.txtOpenFile || this.txtOpenFile;
this.isTSV = options.isTSV || false;
this.template = options.template || [
'<div class="box">',
'<div class="content-panel" >',
@ -106,9 +106,39 @@ define([
'<% if (type == Common.Utils.importTextType.Paste || type == Common.Utils.importTextType.Columns || type == Common.Utils.importTextType.Data) { %>',
'<div style="display: inline-block; <% if (codepages && codepages.length>0) { %>margin-top:15px;<% } %>width: 100%;">',
'<label class="header">' + t.txtDelimiter + '</label>',
'<div>',
'<div id="id-delimiters-combo" class="input-group-nr" style="max-width: 100px;display: inline-block; vertical-align: middle;"></div>',
'<div id="id-delimiter-other" class="input-row margin-left-10" style="display: inline-block; vertical-align: middle;"></div>',
'<div class="controll-panel <% if (type == Common.Utils.importTextType.Paste || type == Common.Utils.importTextType.Columns) { %>margin-top<% } %>">',
'<% if (type == Common.Utils.importTextType.Paste || type == Common.Utils.importTextType.Columns) { %>',
'<table id="id-delimiters-table">',
'<tr>',
'<td>',
'<div id="id-delimiter-chk-comma"></div>',
'</td>',
'<td>',
'<div id="id-delimiter-chk-tab"></div>',
'</td>',
'</tr>',
'<tr>',
'<td>',
'<div id="id-delimiter-chk-semicolon"></div>',
'</td>',
'<td>',
'<div id="id-delimiter-chk-space"></div>',
'</td>',
'</tr>',
'<tr>',
'<td>',
'<div id="id-delimiter-chk-colon"></div>',
'</td>',
'<td id="id-delimiter-other-row">',
'<div id="id-delimiter-chk-other"></div>',
'<div id="id-delimiter-other"></div>',
'</td>',
'</tr>',
'</table>',
'<% } else { %>',
'<div id="id-delimiters-combo" class="input-group-nr" style="max-width: 100px;display: inline-block; vertical-align: middle;"></div>',
'<div id="id-delimiter-other" class="input-row margin-left-10" style="display: inline-block; vertical-align: middle;"></div>',
'<% } %>',
'<button type="button" class="btn auto btn-text-default float-right" id="id-delimiters-advanced" style="min-width:100px; display: inline-block;">' + t.txtAdvanced + '</button>',
'</div>',
'</div>',
@ -214,6 +244,7 @@ define([
this.inputPwd && arr.push(this.inputPwd);
this.cmbEncoding && arr.push(this.cmbEncoding);
this.cmbDelimiter && arr.push(this.cmbDelimiter);
this.delimiterCheckboxes && (arr = arr.concat(this.delimiterCheckboxes.map(function(i) { return i.cmp; })));
this.inputDelimiter && arr.push(this.inputDelimiter);
this.btnAdvanced && arr.push(this.btnAdvanced);
this.txtDestRange && arr.push(this.txtDestRange);
@ -225,16 +256,20 @@ define([
Common.UI.Window.prototype.show.apply(this, arguments);
var me = this;
if (this.type == Common.Utils.importTextType.DRM) {
setTimeout(function(){
me.inputPwd.focus();
if (me.validatePwd)
me.inputPwd.checkValidate();
}, 500);
} else {
var cmp = me.txtDestRange ? me.txtDestRange : (me.cmbEncoding ? me.cmbEncoding : me.cmbDelimiter);
cmp && setTimeout(function(){cmp.focus();}, 500);
}
if (this.type == Common.Utils.importTextType.DRM) {
setTimeout(function(){
me.inputPwd.focus();
if (me.validatePwd)
me.inputPwd.checkValidate();
}, 500);
} else {
var cmp = me.txtDestRange || null;
(!cmp && me.cmbEncoding) && (cmp = me.cmbEncoding);
(!cmp && me.cmbDelimiter) && (cmp = me.cmbDelimiter);
(!cmp && me.delimiterCheckboxes) && (cmp = me.delimiterCheckboxes[0].cmp);
cmp && setTimeout(function(){cmp.focus();}, 500);
}
},
onBtnClick: function(event) {
@ -256,25 +291,43 @@ define([
var encoding = (this.cmbEncoding && !this.cmbEncoding.isDisabled()) ? this.cmbEncoding.getValue() :
((this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : 0),
delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null,
delimiterChar = (delimiter == -1) ? this.inputDelimiter.getValue() : null;
(delimiter == -1) && (delimiter = null);
delimiters = [],
delimiterChar = null;
if(this.cmbDelimiter) {
delimiters = [this.cmbDelimiter.getValue()];
} else if(this.delimiterCheckboxes) {
this.delimiterCheckboxes.forEach(function(checkbox) {
checkbox.cmp.isChecked() && delimiters.push(checkbox.id);
});
}
delimiterChar = delimiters.includes(-1) ? this.inputDelimiter.getValue() : null;
const delimForSave = JSON.stringify(!delimiters.length ? [-1] : delimiters);
if (this.type === Common.Utils.importTextType.TXT) { //save last encoding only for txt files
this._isEncodingChanged && Common.localStorage.setItem("de-settings-open-encoding", encoding);
} else if (this.type === Common.Utils.importTextType.CSV) { // only for csv files
this._isDelimChanged && Common.localStorage.setItem("sse-settings-csv-delimiter", delimiter === null ? -1 : delimiter);
this._isDelimCharChanged && Common.localStorage.setItem("sse-settings-csv-delimiter-char", delimiterChar || '');
this._isDelimChanged && Common.localStorage.setItem("sse-settings-csv-delimiter", delimForSave);
this._isDelimCharChanged && Common.localStorage.setItem("sse-settings-csv-delimiter-char",
delimiterChar || ''
);
this._isEncodingChanged && Common.localStorage.setItem("sse-settings-csv-encoding", encoding);
} else if (this.type === Common.Utils.importTextType.Paste || this.type === Common.Utils.importTextType.Columns || this.type === Common.Utils.importTextType.Data) {
this._isDelimChanged && Common.localStorage.setItem("sse-settings-data-delimiter", delimiter === null ? -1 : delimiter);
this._isDelimCharChanged && Common.localStorage.setItem("sse-settings-data-delimiter-char", delimiterChar || '');
} else if (this.type === Common.Utils.importTextType.Paste ||
this.type === Common.Utils.importTextType.Columns ||
this.type === Common.Utils.importTextType.Data
) {
this._isDelimChanged && Common.localStorage.setItem("sse-settings-data-delimiter", delimForSave);
this._isDelimCharChanged && Common.localStorage.setItem("sse-settings-data-delimiter-char",
delimiterChar || ''
);
this._isEncodingChanged && Common.localStorage.setItem("sse-settings-data-encoding", encoding);
}
delimiters = delimiters.filter(function(el) { return el != -1; });
var decimal = this.separatorOptions ? this.separatorOptions.decimal : undefined,
thousands = this.separatorOptions ? this.separatorOptions.thousands : undefined,
qualifier = this.separatorOptions ? this.separatorOptions.qualifier : '"';
var options = new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar);
var options = new Asc.asc_CTextOptions(encoding, delimiters, delimiterChar);
decimal && options.asc_setNumberDecimalSeparator(decimal);
thousands && options.asc_setNumberGroupSeparator(thousands);
qualifier && options.asc_setTextQualifier(qualifier);
@ -366,38 +419,119 @@ define([
}
if (this.type == Common.Utils.importTextType.CSV || this.type == Common.Utils.importTextType.Paste || this.type == Common.Utils.importTextType.Columns || this.type == Common.Utils.importTextType.Data) {
var delimiter = '',
var delimiters = [],
delimiterChar = '';
if (!this.preview) { // don't need to detect delimiter (save to csv)
delimiter = this.settings && this.settings.asc_getDelimiter() ? this.settings.asc_getDelimiter() : 4,
delimiters = this.settings && this.settings.asc_getDelimiter() ? this.settings.asc_getDelimiter() : [4],
delimiterChar = this.settings && this.settings.asc_getDelimiterChar() ? this.settings.asc_getDelimiterChar() : '';
var value = Common.localStorage.getItem(this.type == Common.Utils.importTextType.CSV ? "sse-settings-csv-delimiter" : "sse-settings-data-delimiter");
if (value) {
value = parseInt(value);
if (!isNaN(value)) {
delimiter = value;
(delimiter===-1) && (delimiterChar = Common.localStorage.getItem(this.type == Common.Utils.importTextType.CSV ? "sse-settings-csv-delimiter-char" : "sse-settings-data-delimiter-char") || '');
let valueFromStorage = Common.localStorage.getItem(
this.type == Common.Utils.importTextType.CSV
? "sse-settings-csv-delimiter"
: "sse-settings-data-delimiter"
);
if (valueFromStorage) {
let isDelitFromStorage = false;
valueFromStorage = JSON.parse(valueFromStorage);
if (Array.isArray(valueFromStorage)) {
delimiters = valueFromStorage;
isDelitFromStorage = true;
} else {
const intValue = parseInt(valueFromStorage);
if(!isNaN(intValue)) {
delimiters = [intValue];
isDelitFromStorage = true;
}
}
if(isDelitFromStorage && delimiters.includes(-1)) {
const key = (this.type === Common.Utils.importTextType.CSV
? "sse-settings-csv-delimiter-char"
: "sse-settings-data-delimiter-char"
);
delimiterChar = Common.localStorage.getItem(key) || '';
}
}
}
this.cmbDelimiter = new Common.UI.ComboBox({
el: $('#id-delimiters-combo', this.$window),
style: 'width: 100px;',
menuStyle: 'min-width: 100px;',
cls: 'input-group-nr',
data: [
{value: 4, displayValue: this.txtComma},
{value: 2, displayValue: this.txtSemicolon},
{value: 3, displayValue: this.txtColon},
{value: 1, displayValue: this.txtTab},
{value: 5, displayValue: this.txtSpace},
{value: -1, displayValue: this.txtOther}],
editable: false,
takeFocusOnClose: true
});
this.cmbDelimiter.setValue(delimiter);
this.cmbDelimiter.on('selected', _.bind(this.onCmbDelimiterSelect, this));
if(this.type == Common.Utils.importTextType.Paste || this.type == Common.Utils.importTextType.Columns) {
const me = this;
this.delimiterCheckboxes = [
{
id: 4,
cmp: new Common.UI.CheckBox({
el: $('#id-delimiter-chk-comma'),
labelText: this.txtComma
}),
},
{
id: 2,
cmp: new Common.UI.CheckBox({
el: $('#id-delimiter-chk-semicolon'),
labelText: this.txtSemicolon
})
},
{
id: 3,
cmp: new Common.UI.CheckBox({
el: $('#id-delimiter-chk-colon'),
labelText: this.txtColon
})
},
{
id: 1,
cmp: new Common.UI.CheckBox({
el: $('#id-delimiter-chk-tab'),
labelText: this.txtTab
})
},
{
id: 5,
cmp: new Common.UI.CheckBox({
el: $('#id-delimiter-chk-space'),
labelText: this.txtSpace
})
},
{
id: -1,
cmp: new Common.UI.CheckBox({
el: $('#id-delimiter-chk-other'),
labelText: this.txtOther,
value: -1
})
}
];
this.delimiterCheckboxes.forEach(function(checkbox) {
checkbox.cmp.on('change', function(field) {
if(checkbox.id == -1) {
me.inputDelimiter.setVisible(field.isChecked());
field.isChecked() && setTimeout(function(){me.inputDelimiter.focus();}, 10);
}
me.preview && me.updatePreview();
me._isDelimChanged = true;
});
});
} else {
this.cmbDelimiter = new Common.UI.ComboBox({
el: $('#id-delimiters-combo', this.$window),
style: 'width: 100px;',
menuStyle: 'min-width: 100px;',
cls: 'input-group-nr',
data: [
{value: 4, displayValue: this.txtComma},
{value: 2, displayValue: this.txtSemicolon},
{value: 3, displayValue: this.txtColon},
{value: 1, displayValue: this.txtTab},
{value: 5, displayValue: this.txtSpace},
{value: -1, displayValue: this.txtOther}],
editable: false,
takeFocusOnClose: true
});
this.cmbDelimiter.setValue(this.isTSV ? 1 : delimiters[0]);
this.cmbDelimiter.on('selected', _.bind(this.onCmbDelimiterSelect, this));
}
this.inputDelimiter = new Common.UI.InputField({
el : $('#id-delimiter-other'),
@ -407,7 +541,7 @@ define([
validateOnBlur: false,
value: delimiterChar
});
this.inputDelimiter.setVisible(delimiter===-1);
this.inputDelimiter.setVisible(delimiters.includes(-1));
this.inputDelimiter.on ('changing', _.bind(this.onInputCharChanging, this));
if (this.type == Common.Utils.importTextType.Paste || this.type == Common.Utils.importTextType.Columns || this.type == Common.Utils.importTextType.Data) {
@ -440,24 +574,39 @@ define([
},
textCallback: function(text) {
var delimiter,
var delimiters = [],
delimiterChar,
encoding = (this.cmbEncoding && !this.cmbEncoding.isDisabled()) ? this.cmbEncoding.getValue() :
((this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : 0);
if (this.detectedDelimiter || this.type === Common.Utils.importTextType.TXT) {
delimiter = this.cmbDelimiter ? this.cmbDelimiter.getValue() : null;
delimiterChar = delimiter == -1 ? this.inputDelimiter.getValue() : null;
((this.settings && this.settings.asc_getCodePage()) ? this.settings.asc_getCodePage() : 0);
if (this.detectedDelimiter || this.type === Common.Utils.importTextType.TXT || this.isTSV) {
if(this.cmbDelimiter) {
delimiters = [this.cmbDelimiter.getValue()];
} else if(this.delimiterCheckboxes) {
this.delimiterCheckboxes.forEach(function(checkbox) {
checkbox.cmp.isChecked() && delimiters.push(checkbox.id);
});
}
delimiterChar = delimiters.includes(-1) ? this.inputDelimiter.getValue() : '';
} else {
var res = this.api.asc_getCSVDelimiter(text);
text = res.text;
delimiter = res.delimiter || -1;
delimiterChar = delimiter===-1 ? res.delimiterChar || '' : '';
this.cmbDelimiter.setValue(delimiter);
this.inputDelimiter.setVisible(delimiter===-1);
delimiters = [res.delimiter || -1];
delimiterChar = delimiters.includes(-1) ? res.delimiterChar || '' : '';
if(this.cmbDelimiter) {
this.cmbDelimiter.setValue(delimiters[0]);
} else if(this.delimiterCheckboxes) {
this.delimiterCheckboxes.forEach(function(checkbox) {
checkbox.cmp.setValue(delimiters.includes(checkbox.id), true);
});
}
this.inputDelimiter.setVisible(delimiters.includes(-1));
this.inputDelimiter.setValue(delimiterChar);
this.detectedDelimiter = true;
}
var options = new Asc.asc_CTextOptions(encoding, delimiter, delimiterChar);
delimiters = delimiters.filter(function(el) { return el != -1; });
var options = new Asc.asc_CTextOptions(encoding, delimiters, delimiterChar);
if (this.separatorOptions) {
options.asc_setNumberDecimalSeparator(this.separatorOptions.decimal);
options.asc_setNumberGroupSeparator(this.separatorOptions.thousands);
@ -512,7 +661,7 @@ define([
maxlength = str.length;
}
this._previewTdMaxLength = Math.max(this._previewTdMaxLength, maxlength);
var tpl = '<table>';
var tpl = '<table id="id-preview-table">';
for (var i=0; i<data.length; i++) {
var str = data[i] || '';
tpl += '<tr style="vertical-align: top;">';
@ -534,7 +683,7 @@ define([
}
tpl += '</table>';
} else {
var tpl = '<table>';
var tpl = '<table id="id-preview-table">';
for (var i=0; i<data.length; i++) {
var str = data[i] || '';
tpl += '<tr style="vertical-align: top;"><td>' + Common.Utils.String.htmlEncode(str) + '</td></tr>';

View File

@ -252,14 +252,6 @@ define([
icons = modes[model.get('currentVariation')].get('icons');
if (icons === '') return;
model.set('parsedIcons', this.parseIcons(icons));
this.updatePluginButton(model);
},
updatePluginButton: function(model) {
if (!model.get('visible') || !model.get('parsedIcons'))
return null;
var menuItem = model.get('backgroundPlugin');
menuItem && menuItem.cmpEl && menuItem.cmpEl.find("img").attr("src", model.get('baseUrl') + model.get('parsedIcons')['normal']);
},
createBackgroundPluginsButton: function () {

View File

@ -271,6 +271,11 @@ define([
Common.UI.BaseView.prototype.initialize.call(this, options);
this.appConfig = options.mode;
this.tabOptions = {
canCommentResolve: options.tabOptions && options.tabOptions.canCommentResolve != undefined
? options.tabOptions.canCommentResolve
: true
}
this.lockedControls = [];
var filter = Common.localStorage.getKeysFilter();
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
@ -499,18 +504,20 @@ define([
dataHintOffset: 'small'
});
this.lockedControls.push(this.btnCommentRemove);
this.btnCommentResolve = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
caption: this.txtCommentResolve,
split: true,
iconCls: 'toolbar__icon btn-resolve-all',
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms, _set.viewMode, _set.slideMasterMode],
action: 'comment-resolve',
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.lockedControls.push(this.btnCommentResolve);
if(this.tabOptions.canCommentResolve) {
this.btnCommentResolve = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
caption: this.txtCommentResolve,
split: true,
iconCls: 'toolbar__icon btn-resolve-all',
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms, _set.viewMode, _set.slideMasterMode],
action: 'comment-resolve',
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.lockedControls.push(this.btnCommentResolve);
}
}
if (this.appConfig.isEdit && this.appConfig.canCoAuthoring && this.appConfig.canUseMailMerge) {
@ -789,11 +796,14 @@ define([
if ((!me.btnMailRecepients || !Common.UI.LayoutManager.isElementVisible('toolbar-collaboration-mailmerge')) && separator_last)
me.$el.find(separator_last).hide();
//! NOTE: conflicted code from branch feature/pdf-history. remove if is not relevant and merge is successful
//! Common.NotificationCenter.trigger('tab:visible', 'review', (window.PDFE && (config.isPDFAnnotate || config.isPDFEdit) || !window.PDFE && (config.isEdit || config.canViewReview || me.canComments))
//! && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration'));
var visible = (config.isEdit || config.canViewReview || me.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration');
Common.NotificationCenter.trigger('tab:visible', 'review', visible);
if (Common.Utils.InternalSettings.get('toolbar-active-tab') && visible) { // collaboration tab has hign priority in view mode
Common.Utils.InternalSettings.set('toolbar-active-tab', null);
Common.NotificationCenter.trigger('tab:set-active', 'review');
Common.NotificationCenter.trigger('tab:set-active', 'review', true);
}
setEvents.call(me);
});

View File

@ -93,7 +93,7 @@ define([
'<div id="id-review-popover"></div>',
'<div id="id-comments-popover"></div>',
'</div>',
'<div id="id-comments-arrow" class="comments-arrow"></div>',
//'<div id="id-comments-arrow" class="comments-arrow"></div>',
'</div>'
].join('');
@ -678,6 +678,7 @@ define([
this.handlerHide();
}
this.hideTips();
this.hideMentions();
this._state.commentsVisible = false;
if (!this._state.reviewVisible)
this.hide();
@ -704,6 +705,7 @@ define([
}
this.hideTips();
this.hideMentions();
Common.UI.Window.prototype.hide.call(this);
@ -768,10 +770,9 @@ define([
if (commentsView && arrowView && editorView && editorView.get(0)) {
editorBounds = Common.Utils.getBoundingClientRect(editorView.get(0));
if (editorBounds) {
editorBounds.height = Math.min(editorBounds.height, Math.max(300, editorBounds.height * 0.75));
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
this.$window.css({maxHeight: sdkBoundsHeight + 'px'});
this.$window.css({maxHeight: (Math.min(editorBounds.height, Math.max(300, editorBounds.height * 0.75)) - this.sdkBounds.padding * 2) + 'px'});
this.sdkBounds.width = this.sdkBounds.outerWidth = editorBounds.width;
this.sdkBounds.height = this.sdkBounds.outerHeight = editorBounds.height;
@ -911,10 +912,10 @@ define([
if (editorView && editorView.get(0)) {
editorBounds = Common.Utils.getBoundingClientRect(editorView.get(0));
if (editorBounds) {
editorBounds.height = Math.min(editorBounds.height, Math.max(300, editorBounds.height * 0.75));
sdkBoundsHeight = editorBounds.height - this.sdkBounds.padding * 2;
sdkBoundsTopPos = sdkBoundsTop;
windowHeight = this.$window.outerHeight();
var maxWindowHeight = Math.min(editorBounds.height, Math.max(300, editorBounds.height * 0.75)) - this.sdkBounds.padding * 2;
// TOP CORNER
@ -929,10 +930,17 @@ define([
}
}
outerHeight = Math.max(commentsView.outerHeight(), this.$window.outerHeight());
outerHeight = Math.max(commentsView.outerHeight(), windowHeight);
var movePos = this.isOverCursor();
if (movePos) {
if (Math.ceil(maxWindowHeight) <= Math.ceil(outerHeight)) {
this.$window.css({
maxHeight: maxWindowHeight + 'px'
});
commentsView.css({height: maxWindowHeight - 3 + 'px'});
outerHeight = maxWindowHeight;
}
var leftPos = parseInt(this.$window.css('left')) - this.arrow.width,
newTopDown = movePos[1][1] + sdkPanelHeight + this.arrow.width,// try move down
newTopUp = movePos[0][1] + sdkPanelHeight - this.arrow.width, // try move up
@ -970,40 +978,30 @@ define([
arrowView.toggleClass('top', isMoveDown);
arrowView.toggleClass('bottom', !isMoveDown);
arrowView.removeClass('left right');
} else if (Math.ceil(sdkBoundsHeight) <= Math.ceil(outerHeight)) {
this.$window.css({
maxHeight: sdkBoundsHeight - sdkPanelHeight + 'px',
top: sdkBoundsTop + sdkPanelHeight + 'px'
});
commentsView.css({height: sdkBoundsHeight - sdkPanelHeight - 3 + 'px'});
// arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - sdkPanelHeight - this.arrow.width);
arrowPosY = Math.min(arrowPosY, sdkBoundsHeight - (sdkPanelHeight + this.arrow.margin + this.arrow.height));
arrowView.css({top: arrowPosY + 'px', left: ''});
arrowView.removeClass('top bottom right left');
arrowView.addClass(this._state.arrowCls);
this.scroller.scrollTop(scrollPos);
} else {
if (Math.ceil(maxWindowHeight) <= Math.ceil(outerHeight)) {
this.$window.css({
maxHeight: maxWindowHeight + 'px'
});
commentsView.css({height: maxWindowHeight - 3 + 'px'});
outerHeight = maxWindowHeight;
outerHeight = windowHeight;
} else
outerHeight = windowHeight;
if (outerHeight > 0) {
if (contentBounds.top + outerHeight > sdkBoundsHeight + sdkBoundsTop || contentBounds.height === 0) {
topPos = Math.min(sdkBoundsTop + sdkBoundsHeight - outerHeight, this.arrowPosY + sdkBoundsTop - this.arrow.height);
topPos = Math.max(topPos, sdkBoundsTopPos);
this.$window.css({top: topPos + 'px'});
}
}
arrowPosY = Math.max(this.arrow.margin, this.arrowPosY - (sdkBoundsHeight - outerHeight) - this.arrow.height);
arrowPosY = Math.min(arrowPosY, outerHeight - this.arrow.margin - this.arrow.height);
arrowView.css({top: arrowPosY + 'px', left: ''});
arrowView.removeClass('top bottom right left');
arrowView.addClass(this._state.arrowCls);
this.scroller.scrollTop(scrollPos);
}
}
}
@ -1171,10 +1169,29 @@ define([
});
}
}, this);
},
hideMentions: function () {
if (this.emailMenu && this.emailMenu.rendered)
this.emailMenu.cmpEl.css('display', 'none');
},
moveMentions: function () {
var menu = this.emailMenu;
if (menu && menu.rendered && menu.isVisible() && this.commentsView) {
var menuContainer = this.$window.find(Common.Utils.String.format('#menu-container-{0}', menu.id)),
textbox = this.commentsView.getTextBox(),
textboxDom = textbox ? textbox[0] : null,
showPoint = textboxDom ? [textboxDom.offsetLeft, textboxDom.offsetTop + textboxDom.clientHeight + 3] : [0, 0];
menuContainer.css({left: showPoint[0], top : showPoint[1]});
menu.menuAlignEl = textbox;
menu.show();
menu.cmpEl.css('display', '');
menu.alignPosition('bl-tl', -5);
}
},
isCommentsViewMouseOver: function () {
return this._isMouseOver;
},

View File

@ -76,10 +76,11 @@ define([
this.options.tpl = _.template(this.template)(this.options);
this.iconType = this.options.iconType;
this.mode = options.editMode;
Common.UI.Window.prototype.initialize.call(this, this.options);
Common.NotificationCenter.on('layout:changed', _.bind(this.onLayoutChanged, this));
Common.NotificationCenter.on('pdf:mode-apply', _.bind(this.onModeChanged, this));
Common.NotificationCenter.on('pdf:mode-changed', _.bind(this.onModeChanged, this));
$(window).on('resize', _.bind(this.onLayoutChanged, this));
},
@ -169,8 +170,8 @@ define([
this.updateResultsNumber(resultNumber, allResults);
}, this));
this.btnOpenPanelRedact && this.btnOpenPanelRedact.setVisible(this.mode === 'edit')
this.btnOpenPanelRedact && this.btnOpenPanelRedact.setVisible(this.mode === 'edit');
this.btnOpenPanel && this.btnOpenPanel.setVisible(this.mode !== 'edit');
return this;
},
@ -219,8 +220,9 @@ define([
this.$window.css({left: left, top: top});
},
onModeChanged: function (mode) {
this.mode = mode;
onModeChanged: function (config) {
if (!config) return;
this.mode = config.isPDFEdit ? 'edit' : (config.isPDFAnnotate ? 'comment' : 'view');
this.btnOpenPanel.setVisible(this.mode !== 'edit')
this.btnOpenPanelRedact.setVisible(this.mode == 'edit')
},

View File

@ -193,7 +193,7 @@ define([
dataHintOffset: 'medium'
});
this.buttonRedactSearch.on('click', _.bind(function() {
this.fireEvent('search:showredact');
this.fireEvent('search:showredact', [true]);
}, this));
this.$resultsContainer = $('#search-results');
@ -207,7 +207,7 @@ define([
});
Common.NotificationCenter.on('search:updateresults', _.bind(this.disableNavButtons, this));
Common.NotificationCenter.on('pdf:mode-apply', _.bind(this.onModeChanged, this));
Common.NotificationCenter.on('pdf:mode-changed', _.bind(this.onModeChanged, this));
if (window.SSE) {
this.cmbWithin = new Common.UI.ComboBox({
@ -451,11 +451,10 @@ define([
this.fireEvent('search:'+action, [this.inputText.getValue()]);
},
onModeChanged: function (isEdit) {
if (isEdit !== 'edit') {
Common.NotificationCenter.trigger('search:resetmode');
}
this.$el.find('.redact-no-replace-btn')[this.mode === 'no-replace' && isEdit === 'edit' ? 'show' : 'hide']();
onModeChanged: function (config) {
var isEdit = config && config.isPDFEdit;
!isEdit && Common.NotificationCenter.trigger('search:resetmode');
this.$el.find('.redact-no-replace-btn')[this.mode === 'no-replace' && isEdit ? 'show' : 'hide']();
},
getSettings: function() {

View File

@ -290,7 +290,7 @@ define([
const forbiddensKeys = [Common.UI.Keys.ESC, Common.UI.Keys.TAB];
if(!Common.Utils.isMac) {
forbiddensKeys.push(91); //Meta (Super, Win)
forbiddensKeys.push(Common.UI.Keys.META); //Meta (Super, Win)
}
if (forbiddensKeys.includes(e.keyCode)) {
@ -313,14 +313,13 @@ define([
const keys = [];
if (e.ctrlKey) keys.push('Ctrl');
if (e.shiftKey) keys.push('Shift');
if (e.altKey) keys.push('Alt');
if (e.metaKey && Common.Utils.isMac) keys.push('⌘');
if (e.metaKey && Common.Utils.isMac) keys.push(me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.META));
if (e.ctrlKey) keys.push(me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.CTRL));
if (e.altKey) keys.push(me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.ALT));
if (e.shiftKey) keys.push(me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.SHIFT));
if (![Common.UI.Keys.CTRL, Common.UI.Keys.SHIFT, Common.UI.Keys.ALT, 91].includes(e.keyCode)) {
const app = (window.DE || window.PE || window.SSE || window.PDFE || window.VE);
keys.push(app.getController('Common.Controllers.Shortcuts').keyCodeToKeyName(e.keyCode));
if (![Common.UI.Keys.CTRL, Common.UI.Keys.SHIFT, Common.UI.Keys.ALT, Common.UI.Keys.META].includes(e.keyCode)) {
keys.push(me._shortcutsController.keyCodeToKeyName(e.keyCode));
ascShortcut.asc_SetKeyCode(e.keyCode);
} else {
ascShortcut.asc_SetKeyCode(null);
@ -337,7 +336,12 @@ define([
const removeKeysIfOnlyModifiers = function(removedKeys) {
const modifierKeys = ['Ctrl', 'Shift', 'Alt', '⌘'];
const modifierKeys = [
me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.CTRL),
me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.SHIFT),
me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.ALT),
me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.META)
];
const keys = item.get('keys');
const hasExtra = _.some(keys, function(k) {
return !_.contains(modifierKeys, k);
@ -355,10 +359,10 @@ define([
$keysInput.on('keyup', function(e) {
const modifierKeyMap = {
[Common.UI.Keys.CTRL]: 'Ctrl',
[Common.UI.Keys.ALT]: 'Alt',
[Common.UI.Keys.SHIFT]: 'Shift',
91: '⌘'
[Common.UI.Keys.CTRL]: me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.CTRL),
[Common.UI.Keys.ALT]: me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.ALT),
[Common.UI.Keys.SHIFT]: me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.SHIFT),
[Common.UI.Keys.META]: me._shortcutsController.keyCodeToKeyName(Common.UI.Keys.META)
};
const modifierKey = modifierKeyMap[e.keyCode];
removeKeysIfOnlyModifiers(modifierKey ? [modifierKey] : []);

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none" viewBox="0 0 28 28">
<path fill="#444" d="M21 16a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10zm-1 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6M8 4a3 3 0 1 1 0 6 3 3 0 0 1 0-6"/>
<path fill="#444" d="M21 2a5 5 0 0 1 0 10H7l-.257-.007a5 5 0 0 1 0-9.986L7 2zM7 3a4 4 0 1 0 0 8h14a4 4 0 0 0 0-8z"/>
</svg>

After

Width:  |  Height:  |  Size: 357 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5 17h10v-2h1v3H4v-3h1zM5 6.5V14H4V7.707l-1.5 1.5-.707-.707 2.353-2.354zm6 7.5H6V6h5zm-4-1h3V7H7zm10 1h-5V6h5zm-4-1h3V7h-3zm3-8h-1V2.996H5V5H4V1.996h12z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none">
<path d="M6.5 6.5V5.496a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1V6.5m-11 11v1a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-1" class="icon-stroke-gray-primary"/>
<path d="M6.5 15.5v-7l-2 2m12 5a2 2 0 0 1-2-2v-3a2 2 0 1 1 4 0v3a2 2 0 0 1-2 2Zm-6 0a2 2 0 0 1-2-2v-3a2 2 0 1 1 4 0v3a2 2 0 0 1-2 2Z" class="icon-stroke-blue-primary"/>
</svg>

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

View File

@ -30,6 +30,7 @@
font: 15px Tahoma;
color: @text-tertiary-ie;
color: @text-tertiary;
user-select: text;
}
.asc-about-companyname {
@ -37,6 +38,7 @@
letter-spacing: 0.01em;
color: @text-normal-ie;
color: @text-normal;
user-select: text;
}
label {
@ -47,6 +49,7 @@
.font-size-medium();
color: @text-normal-ie;
color: @text-normal;
user-select: text;
}
&.asc-about-desc-name {
@ -66,6 +69,7 @@
.font-size-medium();
color: @text-normal-ie;
color: @text-normal;
user-select: text;
}
.separator.horizontal {

View File

@ -36,7 +36,6 @@
box-shadow: inset 0 0 0 @scaled-one-px-value-ie @chb-border-normal-ie;
box-shadow: inset 0 0 0 @scaled-one-px-value @chb-border-normal;
pointer-events: none;
z-index: 1;
}
svg {

View File

@ -33,8 +33,6 @@
--highlight-button-pressed-hover: #7d858c;
--highlight-primary-dialog-button-hover: #666d73;
--highlight-primary-dialog-button-pressed: var(--highlight-primary-dialog-button-hover);
--highlight-accent-button-hover: #375478;
--highlight-accent-button-pressed: #293f59;
--highlight-header-button-hover: fade(#000, 15%);
--highlight-header-button-pressed: fade(#000, 25%);
--highlight-text-select: #3494fb;
@ -58,18 +56,16 @@
--border-toolbar-active-tab: var(--background-toolbar);
--border-divider: #cbcbcb;
--border-regular-control: #cfcfcf;
--border-toolbar-button-hover: #d8dadc;
--border-preview-hover: #cfcfcf;
--border-preview-select: #848484;
--border-control-focus: #848484;
--border-color-shading: fade(#000, 20%);
--border-error: #d9534f;
--border-contrast-popover: #fff;
--border-button-pressed-focus: #444444;
--text-normal: #444;
--text-normal-pressed: #fff;
--text-secondary: #a5a5a5;
--text-secondary: #757575;
--text-tertiary: #a5a5a5;
--text-link: #445799;
--text-link-hover: #445799;
@ -82,10 +78,7 @@
--icon-normal: #444;
--icon-normal-pressed: #fff;
--icon-inverse: #444;
--icon-toolbar-header: #fff;
--icon-notification-badge: #000;
--icon-contrast-popover: #fff;
--icon-success: #5b9f27;
// Canvas
@ -104,7 +97,6 @@
--canvas-high-contrast: #000;
--canvas-high-contrast-disabled: #82878f;
--canvas-cell-border: fade(#000, 10%);
--canvas-cell-title-text: #444;
--canvas-cell-title-background: #f1f1f1;
--canvas-cell-title-background-hover: #d6d6d6;
@ -139,8 +131,6 @@
--canvas-sheet-view-cell-title-label: #121212;
--canvas-sheet-view-select-all-icon: #3d664e;
--canvas-freeze-line-1px: #818181;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #82878f;
--canvas-anim-pane-background: #f1f1f1;
@ -234,6 +224,9 @@
--toolbar-preferred-tab-style: fill;
--border-editor-sdk: var(--scaled-one-pixel, 1px) solid var(--border-toolbar);
--highlight-comment-hover: #E0E0E0;
--highlight-comment-pressed: #D3D5D7;
//--rb-background-normal: var(--background-normal);
//--rb-background-normal-hover: var(--background-normal);
//--rb-background-checked: var(--background-normal);

View File

@ -34,8 +34,6 @@
--highlight-button-pressed-hover: #828282;
--highlight-primary-dialog-button-hover: #a6a6a6;
--highlight-primary-dialog-button-pressed: var(--highlight-primary-dialog-button-hover);
--highlight-accent-button-hover: #75a2d6;
--highlight-accent-button-pressed: #89afdc;
--highlight-header-button-hover: fade(#fff, 20%);
--highlight-header-button-pressed: fade(#fff, 35%);
--highlight-text-select: #96c8fd;
@ -47,12 +45,10 @@
--border-toolbar-active-panel-top: var(--border-toolbar);
--border-toolbar-active-tab: var(--border-toolbar);
--border-regular-control: #696969;
--border-toolbar-button-hover: #616161;
--border-preview-hover: #828282;
--border-preview-select: #888;
--border-control-focus: #b8b8b8;
--border-color-shading: fade(#fff, 15%);
--border-error: #f62211;
--border-contrast-popover: #616161;
--border-button-pressed-focus: #b8b8b8;
@ -71,10 +67,7 @@
--icon-normal: #e8e8e8;
--icon-normal-pressed: #e8e8e8;
--icon-inverse: #2a2a2a;
--icon-toolbar-header: #d0d0d0;
--icon-notification-badge: #121212;
--icon-contrast-popover: #fff;
--icon-success: #090;
--highlight-header-tab-underline-document: var(--text-toolbar-header);
@ -105,7 +98,6 @@
--canvas-high-contrast: #c3c3c3;
--canvas-high-contrast-disabled: #7d7d7d;
--canvas-cell-border: #656565;
--canvas-cell-title-text: #e8e8e8;
--canvas-cell-title-background: #1d1d1d;
--canvas-cell-title-background-hover: #303030;
@ -140,8 +132,6 @@
--canvas-sheet-view-cell-title-label: #121212;
--canvas-sheet-view-select-all-icon: #3d664e;
--canvas-freeze-line-1px: #818184;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #7d7d7d;
--canvas-anim-pane-background: #2a2a2a;
@ -235,6 +225,9 @@
--toolbar-preferred-tab-style: fill;
--border-editor-sdk: var(--scaled-one-pixel, 1px) solid var(--border-toolbar);
--highlight-comment-hover: #3A3A3A;
--highlight-comment-pressed: #5B5B5B;
//--rb-background-normal: var(--background-normal);
//--rb-background-normal-hover: var(--background-normal);
//--rb-background-checked: var(--background-normal);

View File

@ -35,8 +35,6 @@
--highlight-button-pressed-hover: #808080;
--highlight-primary-dialog-button-hover: #fcfcfc;
--highlight-primary-dialog-button-pressed: var(--highlight-primary-dialog-button-hover);
--highlight-accent-button-hover: #75a2d6;
--highlight-accent-button-pressed: #89afdc;
--highlight-header-button-hover: fade(#fff, 15%);
--highlight-header-button-pressed: fade(#fff, 25%);
--highlight-text-select: #96c8fd;
@ -48,12 +46,10 @@
--border-toolbar-active-tab: var(--background-toolbar);
--border-divider: #505050;
--border-regular-control: #666;
--border-toolbar-button-hover: #5a5a5a;
--border-preview-hover: #757575;
--border-preview-select: #bdbdbd;
--border-control-focus: #ccc;
--border-color-shading: fade(#fff, 10%);
--border-error: #f62211;
--border-contrast-popover: #666;
--border-button-pressed-focus: #ccc;
@ -72,10 +68,7 @@
--icon-normal: fade(#fff, 80%);
--icon-normal-pressed: fade(#fff, 80%);
--icon-inverse: #444;
--icon-toolbar-header: fade(#fff, 80%);
--icon-notification-badge: #000;
--icon-contrast-popover: #fff;
--icon-success: #090;
--highlight-header-tab-underline-document: var(--text-toolbar-header);
@ -106,7 +99,6 @@
--canvas-high-contrast: #fff;
--canvas-high-contrast-disabled: #ccc;
--canvas-cell-border: fade(#000, 10%);
--canvas-cell-title-text: #d9d9d9;
--canvas-cell-title-background: #555;
--canvas-cell-title-background-hover: #787878;
@ -141,8 +133,6 @@
--canvas-sheet-view-cell-title-label: #121212;
--canvas-sheet-view-select-all-icon: #3d664e;
--canvas-freeze-line-1px: #818183;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #888;
--canvas-anim-pane-background: #404040;
@ -259,5 +249,8 @@
--rb-border-checked-hover: var(--border-regular-control);
--rb-border-checked-focus: var(--border-control-focus);
--rb-check-mark-background: var(--text-normal);
--highlight-comment-hover: #4B4B4B;
--highlight-comment-pressed: #656565;
}
}

View File

@ -36,8 +36,6 @@
--highlight-button-pressed-hover: #bababa;
--highlight-primary-dialog-button-hover: #1c1c1c;
--highlight-primary-dialog-button-pressed: var(--highlight-primary-dialog-button-hover);
--highlight-accent-button-hover: #375478;
--highlight-accent-button-pressed: #293f59;
--highlight-header-button-hover: #e0e0e0;
--highlight-header-button-pressed: #cbcbcb;
--highlight-text-select: #3494fb;
@ -49,12 +47,10 @@
--border-toolbar-active-tab: var(--background-toolbar-tab);
--border-divider: #dfdfdf;
--border-regular-control: #c0c0c0;
--border-toolbar-button-hover: #e0e0e0;
--border-preview-hover: #bababa;
--border-preview-select: #888;
--border-control-focus: #848484;
--border-color-shading: fade(#000, 15%);
--border-error: #f62211;
--border-contrast-popover: #fff;
--border-button-pressed-focus: #848484;
@ -73,10 +69,7 @@
--icon-normal: #444;
--icon-normal-pressed: #444;
--icon-inverse: #444;
--icon-toolbar-header: #444;
--icon-notification-badge: #000;
--icon-contrast-popover: #fff;
--icon-success: #090;
--highlight-header-tab-underline-document: var(--text-toolbar-header);
@ -107,7 +100,6 @@
--canvas-high-contrast: #000;
--canvas-high-contrast-disabled: #666;
--canvas-cell-border: fade(#000, 10%);
--canvas-cell-title-text: #444;
--canvas-cell-title-background: #f7f7f7;
--canvas-cell-title-background-hover: #dfdfdf;
@ -142,8 +134,6 @@
--canvas-sheet-view-cell-title-label: #121212;
--canvas-sheet-view-select-all-icon: #3d664e;
--canvas-freeze-line-1px: #818182;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #999;
// Others
@ -214,6 +204,9 @@
--toolbar-preferred-tab-style: fill;
--border-editor-sdk: var(--scaled-one-pixel, 1px) solid var(--border-toolbar);
--highlight-comment-hover: #EBEAEB;
--highlight-comment-pressed: #DCDBDB;
//--rb-background-normal: var(--background-normal);
//--rb-background-normal-hover: var(--background-normal);
//--rb-background-checked: var(--background-normal);

View File

@ -48,20 +48,16 @@
@highlight-header-button-hover-ie: fade(#000, 15%);
@highlight-header-button-pressed-ie: fade(#000, 25%);
@highlight-text-select-ie: #3494fb;
@highlight-accent-button-hover-ie: #375478;
@highlight-accent-button-pressed-ie: #293F59;
@highlight-fill-button-hover-ie: #ffe165;
@highlight-fill-button-pressed-ie: #dfb500;
@border-toolbar-ie: #cbcbcb;
@border-divider-ie: #cbcbcb;
@border-regular-control-ie: #cfcfcf;
@border-toolbar-button-hover-ie: #d8dadc;
@border-preview-hover-ie: #cfcfcf;
@border-preview-select-ie: #848484;
@border-control-focus-ie: #848484;
@border-color-shading-ie: fade(#000, 20%);
@border-error-ie: #d9534f;
@border-contrast-popover-ie: #fff;
@border-button-pressed-focus-ie: #666d73;
@ -77,10 +73,7 @@
@icon-normal-ie: #444;
@icon-normal-pressed-ie: #fff;
@icon-inverse-ie: #444;
@icon-toolbar-header-ie: #fff;
@icon-notification-badge-ie: #000;
@icon-contrast-popover-ie: #fff;
@icon-success-ie: #5b9f27;
@canvas-scroll-thumb-hover-ie: #c0c0c0;
@ -244,6 +237,9 @@
@toolbar-simple-shadow-ie: 0 none;
@border-editor-sdk-ie: 1px solid @border-toolbar-ie;
@highlight-comment-hover-ie: #EBEAEB;
@highlight-comment-pressed-ie: #DCDBDB;
@button-small-active-icon-offset-x-ie: -20px;
.ie {

View File

@ -18,8 +18,8 @@
--background-toolbar: #404040;
--background-toolbar-tab: #404040;
--background-toolbar-additional: #404040;
--background-primary-dialog-button: #6e9fec;
--background-accent-button: #6e9fec;
--background-primary-dialog-button: #4A7BE0;
--background-accent-button: #4A7BE0;
--background-notification-popover: #1F2C5C;
--background-notification-badge: #ffd112;
--background-scrim: fade(#000, 20%);
@ -34,10 +34,8 @@
--highlight-button-hover: #585858;
--highlight-button-pressed: #686868;
--highlight-button-pressed-hover: #7f7f7f;
--highlight-primary-dialog-button-hover: #4a87e7;
--highlight-primary-dialog-button-pressed: #446eca;
--highlight-accent-button-hover: #375478;
--highlight-accent-button-pressed: #293f59;
--highlight-primary-dialog-button-hover: #366CDA;
--highlight-primary-dialog-button-pressed: #2A5BB9;
--highlight-header-button-hover: #585858;
--highlight-header-button-pressed: #686868;
--highlight-text-select: #3494fb;
@ -49,14 +47,12 @@
--border-toolbar-active-tab: var(--background-toolbar-tab);
--border-divider: #585858;
--border-regular-control: #686868;
--border-toolbar-button-hover: #eaeaea;
--border-preview-hover: #92B7F0;
--border-preview-select: #4A87E7;
--border-control-focus: #4A87E7;
--border-preview-select: #4A7BE0;
--border-control-focus: #4A7BE0;
--border-color-shading: #686868;
--border-error: #f62211;
--border-contrast-popover: #686868;
--border-button-pressed-focus: #4A87E7;
--border-button-pressed-focus: #4A7BE0;
--text-normal: #f3f3f3;
--text-normal-pressed: #f9f9f9;
@ -73,10 +69,7 @@
--icon-normal: #eaeaea;
--icon-normal-pressed: #eaeaea;
--icon-inverse: #171717;
--icon-toolbar-header: #eaeaea;
--icon-notification-badge: #eaeaea;
--icon-contrast-popover: #fff;
--icon-success: #78b588;
--highlight-header-tab-underline-document: #4a87e7;
@ -107,7 +100,6 @@
--canvas-high-contrast: #eaeaea;
--canvas-high-contrast-disabled: #666;
--canvas-cell-border: #686868;
--canvas-cell-title-text: #b2b2b2;
--canvas-cell-title-background: #222;
--canvas-cell-title-background-hover: #404040;
@ -142,8 +134,6 @@
--canvas-sheet-view-cell-title-label: #fff;
--canvas-sheet-view-select-all-icon: #f3f3f3;
--canvas-freeze-line-1px: #818182;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #999;
// Others
@ -248,7 +238,7 @@
--border-fill-input: var(--border-regular-control);
//--border-fill-input-focused: var(--border-control-focus);
--border-fill-input-focused: #4A87E7;
--border-fill-input-focused: #4A7BE0;
--border-fill-input-disabled: var(--border-regular-control);
--border-fill-input-readonly: var(--border-regular-control);
@ -272,14 +262,14 @@
--chb-check-mark-background: #fff;
--chb-background-normal: var(--background-normal);
--chb-background-normal-hover: #585858;
--chb-background-checked-hover: #4A87E7;
--chb-background-checked: #4A87E7;
--chb-border-normal: #969696;
--chb-border-normal-hover: #969696;
--chb-border-normal-focus: #969696;
--chb-border-checked: #4A87E7;
--chb-border-checked-hover: #4A87E7;
--chb-border-checked-focus: #4A87E7;
--chb-border-normal-hover: #B2B2B2;
--chb-border-normal-focus: #B2B2B2;
--chb-background-checked: #4A7BE0;
--chb-background-checked-hover: #366CDA;
--chb-border-checked: #4A7BE0;
--chb-border-checked-hover: #366CDA;
--chb-border-checked-focus: #4A7BE0;
// radio
--rb-size: 14px;
@ -287,27 +277,27 @@
--rb-check-mark-background: #fff;
--rb-background-normal: var(--background-normal);
--rb-background-normal-hover: #585858;
--rb-background-checked-hover: #4A87E7;
--rb-background-checked: #4A87E7;
--rb-border-normal: #969696;
--rb-border-normal-hover: #969696;
--rb-border-normal-focus: #969696;
--rb-border-checked: #4A87E7;
--rb-border-checked-hover: #4A87E7;
--rb-border-checked-focus: #4A87E7;
--rb-border-normal-hover: #B2B2B2;
--rb-border-normal-focus: #B2B2B2;
--rb-background-checked: #4A7BE0;
--rb-background-checked-hover: #366CDA;
--rb-border-checked: #4A7BE0;
--rb-border-checked-hover: #366CDA;
--rb-border-checked-focus: #4A7BE0;
// slider
--slider-track-height: 4px;
--slider-border-radius: 2px;
--slider-track-background-normal: #686868;
--slider-track-background-filled: #6e9fec;
--slider-track-background-filled: #4A7BE0;
--slider-thumb-size: 18px;
--slider-thumb-border-size: 3px;
--slider-thumb-border-radius: 50%;
--slider-thumb-background-normal: #6e9fec;
--slider-thumb-background-normal: #4A7BE0;
--slider-thumb-border-normal: #fff;
--slider-thumb-background-hover: #4a87e7;
--slider-thumb-background-active: #446eca;
--slider-thumb-background-hover: #366CDA;
--slider-thumb-background-active: #4A7BE0;
--slider-thumb-shadow: 0 1px 2px 0 #0000000F, 0 1px 3px 0 #0000001A;
--sprite-button-small-width: 48px;
@ -344,5 +334,8 @@
--icon-blue-secondary: #b7cff5;
--icon-red: #fca5a5;
--icon-success: #78b588;
--highlight-comment-hover: #383838;
--highlight-comment-pressed: #585858;
}
}

View File

@ -18,8 +18,8 @@
--background-toolbar: #FFFFFF;
--background-toolbar-tab: #fff;
--background-toolbar-additional: #efefef;
--background-primary-dialog-button: #4A87E7;
--background-accent-button: #4A87E7;
--background-primary-dialog-button: #4473ca;
--background-accent-button: #4473ca;
--background-notification-popover: #fcfed7;
--background-notification-badge: #ffd112;
--background-scrim: fade(#000, 20%);
@ -34,10 +34,8 @@
--highlight-button-hover: #EAEAEA;
--highlight-button-pressed: #E1E1E1;
--highlight-button-pressed-hover: #bababa;
--highlight-primary-dialog-button-hover: #2566D5;
--highlight-primary-dialog-button-pressed: #1E53AE;
--highlight-accent-button-hover: #375478;
--highlight-accent-button-pressed: #293f59;
--highlight-primary-dialog-button-hover: #2A5BB9;
--highlight-primary-dialog-button-pressed: #1D4FAF;
--highlight-header-button-hover: #eaeaea;
--highlight-header-button-pressed: #e1e1e1;
--highlight-text-select: #3494fb;
@ -49,14 +47,12 @@
--border-toolbar-active-tab: var(--background-toolbar-tab);
--border-divider: #EAEAEA;
--border-regular-control: #E1E1E1;
--border-toolbar-button-hover: #eaeaea;
--border-preview-hover: #92B7F0;
--border-preview-select: #4A87E7;
--border-control-focus: #4A87E7;
--border-preview-select: #4473CA;
--border-control-focus: #4473CA;
--border-color-shading: fade(#000, 15%);
--border-error: #f62211;
--border-contrast-popover: #fff;
--border-button-pressed-focus: #4A87E7;
--border-button-pressed-focus: #4473CA;
--text-normal: fade(#000, 80%);
--text-normal-pressed: fade(#000, 80%);
@ -73,10 +69,7 @@
--icon-normal: #444;
--icon-normal-pressed: #444;
--icon-inverse: #444;
--icon-toolbar-header: #444;
--icon-notification-badge: #000;
--icon-contrast-popover: #fff;
--icon-success: #090;
--highlight-header-tab-underline-document: #446995;
@ -107,7 +100,6 @@
--canvas-high-contrast: #000;
--canvas-high-contrast-disabled: #666;
--canvas-cell-border: fade(#000, 10%);
--canvas-cell-title-text: #444;
--canvas-cell-title-background: #f7f7f7;
--canvas-cell-title-background-hover: #dfdfdf;
@ -142,8 +134,6 @@
--canvas-sheet-view-cell-title-label: #121212;
--canvas-sheet-view-select-all-icon: #3d664e;
--canvas-freeze-line-1px: #818182;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #999;
// Others
@ -250,7 +240,7 @@
--border-fill-input: var(--border-regular-control);
//--border-fill-input-focused: var(--border-control-focus);
--border-fill-input-focused: #4A87E7;
--border-fill-input-focused: #4473CA;
--border-fill-input-disabled: var(--border-regular-control);
--border-fill-input-readonly: var(--border-regular-control);
@ -273,43 +263,43 @@
--chb-border-radius: 4px;
--chb-check-mark-background: var(--background-normal);
--chb-background-normal: var(--background-normal);
--chb-background-normal-hover: #F9F9F9;
--chb-background-checked-hover: #4A87E7;
--chb-background-checked: #4A87E7;
--chb-border-normal: #969696;
--chb-border-normal-hover: #969696;
--chb-border-normal-focus: #969696;
--chb-border-checked: #4A87E7;
--chb-border-checked-hover: #4A87E7;
--chb-border-checked-focus: #4A87E7;
--chb-background-normal-hover: #f3f3f3;
--chb-border-normal: #7f7f7f;
--chb-border-normal-hover: #686868;
--chb-border-normal-focus: #686868;
--chb-background-checked-hover: #4473CA;
--chb-background-checked: #4473CA;
--chb-border-checked: #4473CA;
--chb-border-checked-hover: #2A5BB9;
--chb-border-checked-focus: #4473CA;
// radio
--rb-size: 14px;
--rb-check-mark-size: 3px;
--rb-check-mark-background: var(--background-normal);
--rb-background-normal: var(--background-normal);
--rb-background-normal-hover: #F9F9F9;
--rb-background-checked-hover: #4A87E7;
--rb-background-checked: #4A87E7;
--rb-border-normal: #969696;
--rb-border-normal-hover: #969696;
--rb-border-normal-focus: #969696;
--rb-border-checked: #4A87E7;
--rb-border-checked-hover: #4A87E7;
--rb-border-checked-focus: #4A87E7;
--rb-background-normal-hover: #f3f3f3;
--rb-border-normal: #7f7f7f;
--rb-border-normal-hover: #686868;
--rb-border-normal-focus: #686868;
--rb-background-checked: #4473CA;
--rb-background-checked-hover: #2A5BB9;
--rb-border-checked: #4473CA;
--rb-border-checked-hover: #2A5BB9;
--rb-border-checked-focus: #4473CA;
// slider
--slider-track-height: 4px;
--slider-border-radius: 2px;
--slider-track-background-normal: #EAEAEA;
--slider-track-background-filled: #446ECA;
--slider-track-background-filled: #4473CA;
--slider-thumb-size: 18px;
--slider-thumb-border-size: 3px;
--slider-thumb-border-radius: 50%;
--slider-thumb-background-normal: #4A87E7;
--slider-thumb-background-normal: #4473CA;
--slider-thumb-border-normal: #fff;
--slider-thumb-background-hover: #446ECA;
--slider-thumb-background-active: #3D59AF;
--slider-thumb-background-hover: #2A5BB9;
--slider-thumb-background-active: #1D4FAF;
--slider-thumb-shadow: 0 1px 2px 0 #0000000F, 0 1px 3px 0 #0000001A;
--sprite-button-small-width: 48px;
@ -346,5 +336,8 @@
--icon-blue-secondary: #dce7fa;
--icon-red: #ef4444;
--icon-success: #2e8b57;
--highlight-comment-hover: #F3F3F3;
--highlight-comment-pressed: #F0F4FC;
}
}

View File

@ -45,8 +45,6 @@
--highlight-button-pressed-hover: #bababa;
--highlight-primary-dialog-button-hover: #1c1c1c;
--highlight-primary-dialog-button-pressed: var(--highlight-primary-dialog-button-hover);
--highlight-accent-button-hover: #375478;
--highlight-accent-button-pressed: #293f59;
--highlight-header-button-hover: fade(#000, 15%);
--highlight-header-button-pressed: fade(#000, 25%);
--highlight-text-select: #3494fb;
@ -58,12 +56,10 @@
--border-toolbar-active-tab: var(--background-toolbar);
--border-divider: #dfdfdf;
--border-regular-control: #c0c0c0;
--border-toolbar-button-hover: #e0e0e0;
--border-preview-hover: #bababa;
--border-preview-select: #888;
--border-control-focus: #848484;
--border-color-shading: fade(#000, 15%);
--border-error: #f62211;
--border-contrast-popover: #fff;
--border-button-pressed-focus: #848484;
@ -82,10 +78,7 @@
--icon-normal: #444;
--icon-normal-pressed: #444;
--icon-inverse: #fff;
--icon-toolbar-header: #fff;
--icon-notification-badge: #000;
--icon-contrast-popover: #fff;
--icon-success: #090;
--highlight-header-tab-underline-document: var(--text-toolbar-header);
@ -116,7 +109,6 @@
--canvas-high-contrast: #000;
--canvas-high-contrast-disabled: #666;
--canvas-cell-border: fade(#000, 10%);
--canvas-cell-title-text: #444;
--canvas-cell-title-background: #f7f7f7;
--canvas-cell-title-background-hover: #dfdfdf;
@ -131,8 +123,6 @@
--canvas-dark-cell-title-border: #3d3d3d;
--canvas-dark-cell-title-border-hover: #5c5c5c;
--canvas-dark-cell-title-border-selected: #0f0f0f;
--canvas-dark-content-background: #3a3a3a;
--canvas-dark-page-border: #2a2a2a;
--canvas-scroll-thumb: #f7f7f7;
--canvas-scroll-thumb-hover: #c0c0c0;
@ -153,8 +143,6 @@
--canvas-sheet-view-cell-title-label: #121212;
--canvas-sheet-view-select-all-icon: #3d664e;
--canvas-freeze-line-1px: #818182;
--canvas-freeze-line-2px: #aaaaaa;
--canvas-select-all-icon: #999;
--canvas-anim-pane-background: #f7f7f7;
@ -391,6 +379,9 @@
--simple-editor-layout-collapse-button-rigth: 3px;
--toolbar-preferred-tab-style: fill;
--border-editor-sdk: var(--scaled-one-pixel, 1px) solid var(--border-toolbar);
--highlight-comment-hover: #EBEAEB;
--highlight-comment-pressed: #DCDBDB;
}
// Background
@ -422,8 +413,6 @@
@highlight-header-button-hover: var(--highlight-header-button-hover);
@highlight-header-button-pressed: var(--highlight-header-button-pressed);
@highlight-text-select: var(--highlight-text-select);
@highlight-accent-button-hover: var(--highlight-accent-button-hover);
@highlight-accent-button-pressed: var(--highlight-accent-button-pressed);
@highlight-fill-button-hover: var(--highlight-fill-button-hover);
@highlight-fill-button-pressed: var(--highlight-fill-button-pressed);
@ -434,12 +423,10 @@
@border-regular-control: var(--border-regular-control);
@border-toolbar-active-panel-top: var(--border-toolbar-active-panel-top);
@border-toolbar-active-tab: var(--border-toolbar-active-tab);
@border-toolbar-button-hover: var(--border-toolbar-button-hover);
@border-preview-hover: var(--border-preview-hover);
@border-preview-select: var(--border-preview-select);
@border-control-focus: var(--border-control-focus);
@border-color-shading: var(--border-color-shading);
@border-error: var(--border-error);
@border-contrast-popover: var(--border-contrast-popover);
@border-button-pressed-focus: var(--border-button-pressed-focus);
@ -462,10 +449,7 @@
// -------------------------
@icon-normal: var(--icon-normal);
@icon-normal-pressed: var(--icon-normal-pressed);
@icon-inverse: var(--icon-inverse);
@icon-toolbar-header: var(--icon-toolbar-header);
@icon-contrast-popover: var(--icon-contrast-popover);
@icon-notification-badge: var(--icon-notification-badge);
@icon-success: var(--icon-success);
@button-small-normal-icon-offset-x: var(--button-small-normal-icon-offset-x,0);
@ -647,6 +631,9 @@
@simple-editor-layout-collapse-button-rigth: var(--simple-editor-layout-collapse-button-rigth);
@border-editor-sdk: var(--border-editor-sdk);
@highlight-comment-hover: var(--highlight-comment-hover);
@highlight-comment-pressed: var(--highlight-comment-pressed);
// Canvas
// ---------------------------
@canvas-background: var(--canvas-background);

View File

@ -122,6 +122,38 @@
.margin-left-7();
}
}
.item {
padding: 10px 10px 0 10px;
.user-comment-item {
border: 1px solid transparent;
border-radius: 4px;
.box-shadow(2px 3px 4px 0px transparent);
padding: 0 10px 10px 10px;
&.last-item {
margin-bottom: 10px;
}
}
&:hover {
.user-comment-item {
background-color: @highlight-comment-hover-ie;
background-color: @highlight-comment-hover;
}
}
&.active {
.user-comment-item {
background-color: @highlight-comment-pressed-ie;
background-color: @highlight-comment-pressed;
border-color: @highlight-comment-pressed-ie;
border-color: @highlight-comment-pressed;
-webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.10), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.10), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
}
}
}
}
.dataview-ct {
@ -162,11 +194,11 @@
margin-top: -1px;
}
.separator-cmt {
border-bottom: @scaled-one-px-value-ie solid @border-toolbar-ie;
border-bottom: @scaled-one-px-value solid @border-toolbar;
margin: 20px 0px 0px 0px;
}
//.separator-cmt {
// border-bottom: @scaled-one-px-value-ie solid @border-toolbar-ie;
// border-bottom: @scaled-one-px-value solid @border-toolbar;
// margin: 20px 0px 0px 0px;
//}
.user-comment-item {
position: relative;
@ -319,13 +351,13 @@
position: absolute;
right: 0;
top: 0;
margin: 11px 21px 10px 10px;
margin: 11px 15px 10px 10px;
height: 20px;
.rtl & {
right: unset;
left: 0;
margin: 11px 10px 10px 21px;
margin: 11px 10px 10px 15px;
}
}

View File

@ -357,6 +357,11 @@
margin-top: calc(-1 * @font-size-base-app + 1px);
fill: @icon-toolbar-header-ie;
fill: @icon-toolbar-header;
.safari & {
margin-top: 0;
transform: translateY(-50%);
}
}
}
@ -370,6 +375,11 @@
text-align: center;
overflow: hidden;
pointer-events: none;
.safari & {
margin-top: 0;
line-height: 1;
}
}
&:not(:disabled) {

View File

@ -30,6 +30,14 @@
}
.controll-panel.margin-top {
margin-top: 8px;
#id-delimiters-advanced {
margin-top: -3px;
}
}
#id-preview {
width: 100%;
height: 110px !important;
@ -39,6 +47,33 @@
border: @border-regular-control solid @scaled-one-px-value;
}
#id-delimiters-table {
display: inline-block;
#id-delimiter-other-row {
display: flex;
#id-delimiter-other {
position: relative;
.margin-left(10px);
.input-field {
position: absolute;
top: -3px
}
}
}
td {
padding-bottom: 8px;
.padding-right(24px);
}
tr:last-child td{
padding-bottom: 0;
}
}
#id-preview-data {
width: 100%;
height: 108px !important;
@ -46,29 +81,29 @@
overflow:hidden;
}
table {
#id-preview-table {
min-height: 108px;
}
td {
padding: 1px 8px 1px 0;
border-right: @border-regular-control-ie solid @scaled-one-px-value-ie;
border-right: @border-regular-control solid @scaled-one-px-value;
min-width: 30px;
height: 17px;
white-space: nowrap;
.rtl & {
padding: 1px 0 1px 8px;
}
}
td:last-child {
border-right: none;
}
tr:last-child {
td {
padding-bottom: 8px;
padding: 1px 8px 1px 0;
border-right: @border-regular-control-ie solid @scaled-one-px-value-ie;
border-right: @border-regular-control solid @scaled-one-px-value;
min-width: 30px;
height: 17px;
white-space: nowrap;
.rtl & {
padding: 1px 0 1px 8px;
}
}
td:last-child {
border-right: none;
}
tr:last-child {
td {
padding-bottom: 8px;
}
}
}

View File

@ -119,7 +119,7 @@
.tools {
display: flex;
align-items: center;
div {
> div {
.margin-left-5();
&:first-of-type {
.margin-left-7();

View File

@ -2,10 +2,13 @@
position: relative;
width: 30px;
height: 16px;
background-color: @border-preview-hover-ie;
background-color: @border-preview-hover;
background-color: @background-normal-ie;
background-color: @background-normal;
border-radius: 11px;
cursor: pointer;
border: 1px solid @chb-border-normal-ie;
border: 1px solid @chb-border-normal;
box-sizing: initial;
.thumb {
position: absolute;
@ -14,17 +17,21 @@
top: 0;
height: 12px;
border-radius: 12px;
background-color: @background-normal-ie;
background-color: @background-normal;
background-color: @chb-border-normal-ie;
background-color: @chb-border-normal;
margin: 2px;
}
&.on {
background-color: @background-primary-dialog-button-ie;
background-color: @background-primary-dialog-button;
border: 1px solid @background-primary-dialog-button-ie;
border: 1px solid @background-primary-dialog-button;
.thumb {
right: 0;
left: auto;
background-color: @background-normal-ie;
background-color: @background-normal;
}
}

View File

@ -136,7 +136,7 @@
}
}
.show-link label {
.show-link label span{
border-bottom: @scaled-one-px-value-ie dotted @text-normal-ie;
border-bottom: @scaled-one-px-value dotted @text-normal;
color: @text-normal-ie;
@ -494,12 +494,14 @@
margin-top: 6px;
}
.show-link label {
.show-link label span{
border-bottom: @scaled-one-px-value-ie dotted @text-link-ie;
border-bottom: @scaled-one-px-value dotted @text-link;
color: @text-link-ie;
color: @text-link;
cursor: pointer;
word-break: break-word;
word-wrap: break-word;
&:hover:not(:disabled) {
color: @text-link-hover;

View File

@ -20,7 +20,7 @@
}
}
&:focus {
&:focus:not(.disabled) {
border-color: @border-preview-select-ie;
border-color: @border-preview-select;
}
@ -31,12 +31,6 @@
.box-shadow(none);
margin: 0;
&:hover,
&.over {
background-color: @highlight-button-hover-ie;
background-color: @highlight-button-hover;
}
&.selected {
background-color: @highlight-button-pressed-ie;
background-color: @highlight-button-pressed;
@ -47,7 +41,14 @@
&.selected .empty {
visibility: hidden;
}
}
&:not(.disabled) > .item {
&:hover,
&.over {
background-color: @highlight-button-hover-ie;
background-color: @highlight-button-hover;
}
}
.tree-item {
@ -95,6 +96,18 @@
}
}
}
&.disabled {
> .item {
cursor: default;
opacity: @component-disabled-opacity-ie;
opacity: @component-disabled-opacity;
}
.tree-caret {
cursor: default;
}
}
}
.safari {

View File

@ -31,8 +31,6 @@
"highlight-button-pressed": "#49617D",
"highlight-button-pressed-hover": "#808080",
"highlight-primary-dialog-button-hover": "#d39eff",
"highlight-accent-button-hover": "#75a2d6",
"highlight-accent-button-pressed": "#89afdc",
"highlight-header-button-hover": "rgba(255, 255, 255, 0.05)",
"highlight-header-button-pressed": "rgba(255, 255, 255, 0.15)",
"highlight-text-select": "#96c8fd",
@ -41,12 +39,10 @@
"border-toolbar-active-panel-top": "#616161",
"border-divider": "#505050",
"border-regular-control": "#666",
"border-toolbar-button-hover": "#5a5a5a",
"border-preview-hover": "#757575",
"border-preview-select": "#bdbdbd",
"border-control-focus": "#b948ff",
"border-color-shading": "rgba(255, 255, 255, 0.1)",
"border-error": "#f62211",
"border-contrast-popover": "#666",
"text-normal": "rgba(255, 255, 255, 0.8)",
@ -64,10 +60,7 @@
"icon-normal": "rgba(255, 255, 255, 0.8)",
"icon-normal-pressed": "rgba(255, 255, 255, 0.8)",
"icon-inverse": "#444",
"icon-toolbar-header": "rgba(255, 255, 255, 0.8)",
"icon-notification-badge": "#000",
"icon-contrast-popover": "#fff",
"icon-success": "#090",
"canvas-background": "#555",
@ -84,7 +77,6 @@
"canvas-high-contrast": "#fff",,
"canvas-high-contrast-disabled": "#ccc",
"canvas-cell-border": "rgba(0, 0, 0, 0.1)",
"canvas-cell-title": "#d9d9d9",
"canvas-cell-title-border": "#757575",
"canvas-cell-title-border-hover": "#858585",
@ -117,8 +109,6 @@
"canvas-sheet-view-cell-background-pressed": "#aaffcc",
"canvas-sheet-view-cell-title-label": "#121214",
"canvas-freeze-line-1px": "#818183",
"canvas-freeze-line-2px": "#aaaaaa",
"canvas-select-all-icon": "#3d664e"
}
}

View File

@ -32,8 +32,6 @@
"highlight-button-pressed": "#cbcbcb",
"highlight-button-pressed-hover": "#bababa",
"highlight-primary-dialog-button-hover": "#52a6ff",
"highlight-accent-button-hover": "#375478",
"highlight-accent-button-pressed": "#293f59",
"highlight-header-button-hover": "rgba(255, 255, 255, 0.15)",
"highlight-header-button-pressed": "rgba(255, 255, 255, 0.25)",
"highlight-text-select": "#3494fb",
@ -42,12 +40,10 @@
"border-toolbar-active-panel-top": "var(--background-toolbar)",
"border-divider": "#dfdfdf",
"border-regular-control": "#c0c0c0",
"border-toolbar-button-hover": "#e0e0e0",
"border-preview-hover": "#bababa",
"border-preview-select": "#888",
"border-control-focus": "#2e8df2",
"border-color-shading": "rgba(0, 0, 0, 0.15)",
"border-error": "#f62211",
"border-contrast-popover": "#fff",
"text-normal": "rgba(0, 0, 0, 0.8)",
@ -65,10 +61,7 @@
"icon-normal": "#444",
"icon-normal-pressed": "#444",
"icon-inverse": "#fff",
"icon-toolbar-header": "#fff",
"icon-notification-badge": "#000",
"icon-contrast-popover": "#fff",
"icon-success": "#090",
"canvas-background": "#eee",
@ -85,7 +78,6 @@
"canvas-high-contrast": "#000",
"canvas-high-contrast-disabled": "#666",
"canvas-cell-border": "rgba(0, 0, 0, 0.1)",
"canvas-cell-title": "#444",
"canvas-cell-title-hover": "#dfdfdf",
"canvas-cell-title-selected": "#cfcfcf",
@ -99,8 +91,6 @@
"canvas-dark-cell-title-border": "#3d3d3d",
"canvas-dark-cell-title-border-hover": "#5c5c5c",
"canvas-dark-cell-title-border-selected": "#0f0f0f",
"canvas-dark-content-background": "#3a3a3a",
"canvas-dark-page-border": "#2a2a2a",
"canvas-scroll-thumb": "#f7f7f7",
"canvas-scroll-thumb-hover": "#c0c0c0",
@ -120,8 +110,6 @@
"canvas-sheet-view-cell-background-pressed": "#aaffcc",
"canvas-sheet-view-cell-title-label": "#121213",
"canvas-freeze-line-1px": "#818182",
"canvas-freeze-line-2px": "#aaaaaa",
"canvas-select-all-icon": "#3d664e"
}
}

View File

@ -1,38 +1,67 @@
import React, { useEffect, useState } from 'react'
import { f7, Icon } from 'framework7-react';
import React, { useEffect, useState, useImperativeHandle } from 'react'
import { f7 } from 'framework7-react';
import { Device } from '../../../../common/mobile/utils/device';
import SvgIcon from '@common/lib/component/SvgIcon'
import IconPlusIos from '@common-ios-icons/icon-plus.svg?ios';
import IconPlusAndroid from '@common-android-icons/icon-plus.svg?android';
export const WheelColorPicker = ({ initialColor = '#ffffff', onSelectColor }) => {
const [color, setColor] = useState(initialColor);
export const WheelColorPicker = ({ initialColor = '#ffffff', onSelectColor, ref }) => {
const [color, setColor] = useState(initialColor);
const pickerInstance = React.useRef(null);
useEffect(() => {
if (!document.getElementsByClassName('color-picker-wheel').length) {
f7.colorPicker.create({
containerEl: document.getElementsByClassName('color-picker-container')[0],
value: { hex: initialColor },
on: { change: (value) => setColor(value.getValue().hex) }
});
}
});
useImperativeHandle(ref, () => ({
update: () => {
if (pickerInstance.current?.modules) {
pickerInstance.current.update();
}
},
setValue: (hex) => {
if (pickerInstance.current) {
pickerInstance.current.setValue({ hex });
}
}
}), []);
return (
<div id='color-picker'>
<div className='color-picker-container'/>
<div className='right-block'>
<div className='color-hsb-preview'>
<div className='new-color-hsb-preview' style={{ backgroundColor: color }}/>
<div className='current-color-hsb-preview' style={{ backgroundColor: initialColor }}/>
useEffect(() => {
const container = document.querySelector('.color-picker-container');
if (!container || pickerInstance.current) return;
pickerInstance.current = f7.colorPicker.create({
containerEl: container,
value: { hex: initialColor },
on: {
change: (value) => setColor(value.getValue().hex)
}
});
return () => {
pickerInstance.current?.destroy();
pickerInstance.current = null;
};
}, []);
useEffect(() => {
if (pickerInstance.current) {
pickerInstance.current.setValue({ hex: initialColor });
setColor(initialColor);
}
}, [initialColor]);
return (
<div id='color-picker'>
<div className='color-picker-container'/>
<div className='right-block'>
<div className='color-hsb-preview'>
<div className='new-color-hsb-preview' style={{ backgroundColor: color }}/>
<div className='current-color-hsb-preview' style={{ backgroundColor: initialColor }}/>
</div>
<a href='#' id='add-new-color' className='button button-round' onClick={() => onSelectColor(color)}>
{Device.ios ?
<SvgIcon slot="media" symbolId={IconPlusIos.id} className='icon icon-svg'/> :
<SvgIcon slot="media" symbolId={IconPlusAndroid.id} className='icon icon-svg white'/>
}
</a>
</div>
</div>
<a href='#' id='add-new-color' className='button button-round' onClick={() => onSelectColor(color)}>
{Device.ios ?
<SvgIcon slot="media" symbolId={IconPlusIos.id} className='icon icon-svg' /> :
<SvgIcon slot="media" symbolId={IconPlusAndroid.id} className='icon icon-svg white' />
}
</a>
</div>
</div>
)
)
}

View File

@ -3,59 +3,16 @@ import { DrawView } from "../view/Draw";
import { inject, observer } from "mobx-react";
import { Device } from "../../utils/device";
import { LocalStorage } from '../../utils/LocalStorage.mjs';
import { f7 } from 'framework7-react';
const DEFAULT_TOOL_SETTINGS = {
pen: { color: '#FF0000', opacity: 100, lineSize: 2 },
highlighter: { color: '#FFFC54', opacity: 50, lineSize: 5 },
pen: { color: '#FF0000', opacity: 100, lineSize: 2 },
highlighter: { color: '#FFFC54', opacity: 50, lineSize: 5 },
}
const DEFAULT_ANDROID_COLORS = ['#FF0000', '#FFC000', '#FFFF00', '#92D050', '#00B050', '#00B0F0', '#0070C0', '#002060', '#C00000']
const DEFAULT_IOS_COLORS = ['#FFFC54', '#72F54A', '#74F9FD', '#EB51F7', '#A900F9', '#FF0303', '#EF8B3A', '#D3D3D4', '#000000']
export const DrawController = inject('storeAppOptions')(observer(({ storeAppOptions }) => {
const [currentTool, setCurrentTool] = useState(null);
const [toolSettings, setToolSettings] = useState(() => {
const stored = LocalStorage.getJson('draw-settings');
return stored || DEFAULT_TOOL_SETTINGS;
});
const [colors, setColors] = useState(() => {
const storageColors = LocalStorage.getJson('draw-colors', []);
if (!storageColors.length) {
return Device.android ? DEFAULT_ANDROID_COLORS : DEFAULT_IOS_COLORS
}
return storageColors
})
const [enableErasing, setEnableErasing] = useState(true);
const onApiFocusObject = () => {
if (storeAppOptions.isDrawMode && currentTool !== 'scroll') {
const api = Common.EditorApi.get();
setEnableErasing(api.asc_HaveInks());
}
}
useEffect(() => {
Common.Notifications.on('draw:start', () => {
storeAppOptions.changeDrawMode(true);
setCurrentToolAndApply('pen');
})
Common.Notifications.on('draw:stop', () => {
storeAppOptions.changeDrawMode(false);
setCurrentToolAndApply('scroll');
})
Common.Notifications.on('engineCreated', api => {
api.asc_registerCallback(window.editorType === 'sse' ? 'asc_onSelectionChanged' : 'asc_onFocusObject', onApiFocusObject);
});
return () => {
Common.Notifications.off('draw:start');
Common.Notifications.off('draw:stop');
Common.Notifications.off('engineCreated');
}
}, []);
const createStroke = (color, lineSize, opacity) => {
const createStroke = (color, lineSize, opacity) => {
const stroke = new Asc.asc_CStroke();
stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);
stroke.put_color(Common.Utils.ThemeColor.getRgbColor(color));
@ -63,52 +20,118 @@ export const DrawController = inject('storeAppOptions')(observer(({ storeAppOpti
stroke.put_width(lineSize);
stroke.put_transparent(opacity * 2.55);
return stroke;
};
};
const toolActions = {
pen: (api, settings) => api.asc_StartDrawInk(createStroke(settings.pen.color, settings.pen.lineSize, settings.pen.opacity)),
highlighter: (api, settings) => api.asc_StartDrawInk(createStroke(settings.highlighter.color, settings.highlighter.lineSize, settings.highlighter.opacity)),
eraser: (api) => api.asc_StartInkEraser(),
eraseEntireScreen: (api) => api.asc_RemoveAllInks(),
scroll: (api) => api.asc_StopInkDrawer(),
};
const setCurrentToolAndApply = (tool) => {
const api = Common.EditorApi.get();
if (tool === 'eraseEntireScreen') {
toolActions.eraseEntireScreen(api);
toolActions[currentTool]?.(api, toolSettings);
setEnableErasing(false);
} else {
setCurrentTool(tool);
toolActions[tool]?.(api, toolSettings);
}
};
const updateToolSettings = (newSettings) => {
setToolSettings(prev => {
const updatedSettings = { ...prev, [currentTool]: { ...prev[currentTool], ...newSettings } };
const api = Common.EditorApi.get();
toolActions[currentTool]?.(api, updatedSettings);
LocalStorage.setJson('draw-settings', updatedSettings)
return updatedSettings;
export const DrawController = inject('storeAppOptions')(observer(({ storeAppOptions }) => {
const [currentTool, setCurrentTool] = useState(null);
const [toolSettings, setToolSettings] = useState(() => {
const stored = LocalStorage.getJson('draw-settings');
return stored || DEFAULT_TOOL_SETTINGS;
});
};
const [colors, setColors] = useState(() => {
const storageColors = LocalStorage.getJson('draw-colors', []);
if (!storageColors.length) {
return Device.android ? DEFAULT_ANDROID_COLORS : DEFAULT_IOS_COLORS
}
return storageColors
})
const [enableErasing, setEnableErasing] = useState(true);
const addCustomColor = (color) => {
const updatedColors = [...colors, color]
setColors(updatedColors)
updateToolSettings({ color })
LocalStorage.setJson('draw-colors', updatedColors)
}
const onApiFocusObject = React.useCallback(() => {
if (storeAppOptions.isDrawMode && currentTool !== 'scroll') {
const api = Common.EditorApi.get();
setEnableErasing(api.asc_HaveInks());
}
}, [storeAppOptions.isDrawMode, currentTool]);
return storeAppOptions.isDrawMode ? <DrawView
currentTool={currentTool}
setTool={setCurrentToolAndApply}
settings={toolSettings}
setSettings={updateToolSettings}
colors={colors}
addCustomColor={addCustomColor}
enableErasing={enableErasing}
/> : null
const toolActions = React.useMemo(() => ({
pen: (api, settings) => api.asc_StartDrawInk(createStroke(settings.pen.color, settings.pen.lineSize, settings.pen.opacity)),
highlighter: (api, settings) => api.asc_StartDrawInk(createStroke(settings.highlighter.color, settings.highlighter.lineSize, settings.highlighter.opacity)),
eraser: (api) => api.asc_StartInkEraser(),
eraseEntireScreen: (api) => api.asc_RemoveAllInks(),
scroll: (api) => api.asc_StopInkDrawer(),
}), []);
useEffect(() => {
const handleDrawStart = () => {
storeAppOptions.changeDrawMode(true);
setCurrentToolAndApply('pen');
};
const handleDrawStop = () => {
storeAppOptions.changeDrawMode(false);
setCurrentToolAndApply('scroll');
};
const handleEngineCreated = (api) => {
api.asc_registerCallback(
window.editorType === 'sse' ? 'asc_onSelectionChanged' : 'asc_onFocusObject',
onApiFocusObject
);
};
Common.Notifications.on('draw:start', handleDrawStart);
Common.Notifications.on('draw:stop', handleDrawStop);
Common.Notifications.on('engineCreated', handleEngineCreated);
return () => {
Common.Notifications.off('draw:start', handleDrawStart);
Common.Notifications.off('draw:stop', handleDrawStop);
Common.Notifications.off('engineCreated', handleEngineCreated);
};
}, [storeAppOptions, toolActions, toolSettings, onApiFocusObject]);
const setCurrentToolAndApply = (tool) => {
const api = Common.EditorApi.get();
if (tool === 'eraseEntireScreen') {
toolActions.eraseEntireScreen(api);
toolActions[currentTool]?.(api, toolSettings);
setEnableErasing(false);
} else {
setCurrentTool(tool);
toolActions[tool]?.(api, toolSettings);
}
};
const updateToolSettings = (newSettings) => {
setToolSettings(prev => {
const updatedSettings = { ...prev, [currentTool]: { ...prev[currentTool], ...newSettings } };
const api = Common.EditorApi.get();
toolActions[currentTool]?.(api, updatedSettings);
LocalStorage.setJson('draw-settings', updatedSettings)
return updatedSettings;
});
};
const addCustomColor = (color) => {
const updatedColors = [...colors, color]
setColors(updatedColors)
updateToolSettings({ color })
LocalStorage.setJson('draw-colors', updatedColors)
}
const closeBackdropSheet = (e) => {
e.preventDefault();
f7.sheet.close();
}
const attachBackdropSwipeClose = () => {
document.querySelector('.sheet-backdrop')?.addEventListener('touchmove', closeBackdropSheet);
}
const removeBackdropSwipeClose = () => {
document.querySelector('.sheet-backdrop')?.removeEventListener('touchmove', closeBackdropSheet);
}
return storeAppOptions.isDrawMode ? <DrawView
currentTool={currentTool}
setTool={setCurrentToolAndApply}
settings={toolSettings}
setSettings={updateToolSettings}
colors={colors}
addCustomColor={addCustomColor}
enableErasing={enableErasing}
attachBackdropSwipeClose={attachBackdropSwipeClose}
removeBackdropSwipeClose={removeBackdropSwipeClose}
/> : null
}));

View File

@ -11,8 +11,7 @@ import IconReviewAndroid from '@common-android-icons/icon-review.svg';
import IconSharingSettings from '@common-icons/icon-sharing-settings.svg';
import IconInsertCommentIos from '@common-ios-icons/icon-insert-comment.svg?ios';
import IconInsertCommentAndroid from '@common-android-icons/icon-insert-comment.svg';
import IconUsersIos from '@common-ios-icons/icon-users.svg?ios';
import IconUsersAndroid from '@common-android-icons/icon-users.svg';
import IconUsers from '@common-icons/icon-users.svg';
const CollaborationPage = props => {
const { t } = useTranslation();
@ -44,10 +43,7 @@ const CollaborationPage = props => {
}
{props.users.editUsers.length > 0 &&
<ListItem link={'/users/'} title={_t.textUsers}>
{Device.ios ?
<SvgIcon slot="media" symbolId={IconUsersIos.id} className={'icon icon-svg'} /> :
<SvgIcon slot="media" symbolId={IconUsersAndroid.id} className={'icon icon-svg'} />
}
<SvgIcon slot="media" symbolId={IconUsers.id} className={'icon icon-svg'} />
</ListItem>
}
{appOptions.canViewComments &&

View File

@ -44,7 +44,6 @@ export class storeThemes {
"canvas-high-contrast",
"canvas-high-contrast-disabled",
"canvas-cell-border",
"canvas-cell-title-border",
"canvas-cell-title-border-hover",
"canvas-cell-title-border-selected",

View File

@ -7,114 +7,153 @@ import IconDrawHighlighter from '../../../../common/mobile/resources/icons/draw-
import IconClearAll from '../../../../common/mobile/resources/icons/clear-all.svg'
import IconClearObject from '../../../../common/mobile/resources/icons/clear-object.svg'
import IconScroll from '../../../../common/mobile/resources/icons/scroll.svg'
import IconPlusIos from '@common-ios-icons/icon-plus.svg?ios';
import IconPlusAndroid from '@common-android-icons/icon-plus.svg?android';
import { WheelColorPicker } from "../component/WheelColorPicker";
import { Device } from "../../utils/device";
export const DrawView = ({ currentTool, setTool, settings, setSettings, colors, addCustomColor, enableErasing }) => {
const { t } = useTranslation();
const _t = t('Draw', { returnObjects: true });
const isDrawingTool = currentTool === 'pen' || currentTool === 'highlighter';
export const DrawView = ({
currentTool,
setTool,
settings,
setSettings,
colors,
addCustomColor,
enableErasing,
attachBackdropSwipeClose,
removeBackdropSwipeClose
}) => {
const { t } = useTranslation();
const _t = t('Draw', { returnObjects: true });
return (
<React.Fragment>
{isDrawingTool && (<>
<Sheet className='draw-sheet draw-sheet--color-picker' backdrop swipeToClose onSheetClosed={() => f7.sheet.open('.draw-sheet--settings')}>
<div className='draw-sheet-label'><span>{_t.textCustomColor}</span></div>
<WheelColorPicker
initialColor={settings[currentTool].color}
onSelectColor={(color) => {
f7.sheet.close('.draw-sheet--color-picker')
addCustomColor(color)
}}
/>
</Sheet>
<Sheet className="draw-sheet draw-sheet--settings" backdrop swipeToClose style={{ height: 'auto' }}>
<div id='swipe-handler' className='swipe-container'>
<Icon icon='icon icon-swipe'/>
</div>
<div className='draw-sheet-label'><span>{_t.textColor}</span></div>
<div className='draw-sheet--settings-colors'>
<div className="draw-sheet--settings-colors-list">
{colors.map((color, index) => (
<div
key={index}
className="draw-sheet--settings-colors-list-item" style={{ backgroundColor: color }}
onClick={() => setSettings({ color })}
onTouchStart={() => setSettings({ color })}
/>
))}
<div
className="draw-sheet--settings-colors-list-add" style={{ backgroundColor: settings[currentTool].color }}
onClick={() => {
f7.sheet.close('.draw-sheet--settings')
f7.sheet.open('.draw-sheet--color-picker')
}}
>
<Icon icon="icon-plus"/>
</div>
const pickerRef = React.useRef(null);
const isDrawingTool = currentTool === 'pen' || currentTool === 'highlighter';
const currentSettings = settings[currentTool] || {};
const currentColor = currentSettings.color || '#000000';
return (
<React.Fragment>
{isDrawingTool && (<>
<Sheet className='draw-sheet draw-sheet--color-picker' backdrop swipeToClose onSheetOpened={() => {
attachBackdropSwipeClose();
}} onSheetClosed={() => {
f7.sheet.open('.draw-sheet--settings');
removeBackdropSwipeClose();
}}>
<div className='draw-sheet-label'><span>{_t.textCustomColor}</span></div>
<WheelColorPicker
ref={pickerRef}
initialColor={settings[currentTool].color}
onSelectColor={(color) => {
f7.sheet.close('.draw-sheet--color-picker')
addCustomColor(color)
}}
/>
</Sheet>
<Sheet className="draw-sheet draw-sheet--settings" backdrop swipeToClose onSheetOpen={() => {
document.activeElement?.blur()
}} onSheetOpened={attachBackdropSwipeClose} onSheetClosed={removeBackdropSwipeClose}
style={{ height: 'auto' }}>
<div id='swipe-handler' className='swipe-container'>
<Icon icon='icon icon-swipe'/>
</div>
<div className='draw-sheet-label'><span>{_t.textColor}</span></div>
<div className='draw-sheet--settings-colors'>
<div className="draw-sheet--settings-colors-list">
{colors.map((color, index) => {
const isSelected = color.toLowerCase() === currentColor.toLowerCase();
return (<div
key={index}
className="draw-sheet--settings-colors-list-item"
style={{ backgroundColor: color }}
data-selected={isSelected}
onClick={() => setSettings({ color })}
onTouchStart={() => setSettings({ color })}
/>)
})}
<div
className="draw-sheet--settings-colors-list-add"
style={{ backgroundColor: settings[currentTool].color }}
onClick={() => {
f7.sheet.close('.draw-sheet--settings');
f7.sheet.open('.draw-sheet--color-picker');
pickerRef.current?.update();
}}
>
{Device.ios
? (<SvgIcon slot="media" symbolId={IconPlusIos.id} className='icon icon-svg'/>)
: (<SvgIcon slot="media" symbolId={IconPlusAndroid.id}
className='icon icon-svg white'/>)
}
</div>
</div>
</div>
<div className='draw-sheet-label'><span>{_t.textLineSize}</span></div>
<div className='draw-sheet-item'>
{/*{Device.android ? (*/}
<Range
min={0.5} max={10} step={0.5} value={settings[currentTool].lineSize}
onRangeChange={(value) => setSettings({ lineSize: value })}
/>
{/*) : (*/}
{/* <input className='line-size-range--ios' type='range' min={0.5} max={10} step={0.5} value={settings[currentTool].lineSize} onChange={(e) => setSettings({ lineSize: parseInt(e.target.value) })} />*/}
{/* )}*/}
</div>
<div className='draw-sheet-label'><span>{_t.textOpacity}</span></div>
<div className='draw-sheet-item'>
<input style={{ '--color': settings[currentTool].color }}
className={Device.android ? 'opacity-range-input--android' : 'opacity-range-input--ios'}
type='range' min={0} max={100} step={1}
value={settings[currentTool].opacity}
onChange={(e) => setSettings({ opacity: parseInt(e.target.value) })}/>
</div>
</Sheet>
</>)}
<div className="draw-toolbar">
<div className="draw-toolbar-item">
<Button type='button' fill={currentTool === 'pen'} onClick={() => setTool('pen')}>
<SvgIcon symbolId={IconDrawPen.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<Button type='button' fill={currentTool === 'highlighter'} onClick={() => setTool('highlighter')}>
<SvgIcon symbolId={IconDrawHighlighter.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<Button type='button' sheetOpen={isDrawingTool ? ".draw-sheet--settings" : undefined}
disabled={!isDrawingTool}>
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<circle cx="50%" cy="50%" r="8" fill={settings[currentTool]?.color || '#808080'}/>
</svg>
</Button>
</div>
<div className="draw-toolbar-item">
<div className='draw-toolbar-divider'/>
</div>
<div className="draw-toolbar-item">
<Button type='button' disabled={!enableErasing} fill={currentTool === 'eraser'}
onClick={() => setTool('eraser')}>
<SvgIcon symbolId={IconClearObject.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<Button type='button' disabled={!enableErasing} onClick={() => setTool('eraseEntireScreen')}>
<SvgIcon symbolId={IconClearAll.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<div className='draw-toolbar-divider'/>
</div>
<div className="draw-toolbar-item">
<Button type='button' fill={currentTool === 'scroll'} onClick={() => setTool('scroll')}
tabIndex='-1'>
<SvgIcon symbolId={IconScroll.id} className='icon icon-svg'/>
</Button>
</div>
</div>
</div>
<div className='draw-sheet-label'><span>{_t.textLineSize}</span></div>
<div className='draw-sheet-item'>
{/*{Device.android ? (*/}
<Range
min={0.5} max={10} step={0.5} value={settings[currentTool].lineSize}
onRangeChange={(value) => setSettings({ lineSize: value })}
/>
{/*) : (*/}
{/* <input className='line-size-range--ios' type='range' min={0.5} max={10} step={0.5} value={settings[currentTool].lineSize} onChange={(e) => setSettings({ lineSize: parseInt(e.target.value) })} />*/}
{/* )}*/}
</div>
<div className='draw-sheet-label'><span>{_t.textOpacity}</span></div>
<div className='draw-sheet-item'>
<input style={{ '--color': settings[currentTool].color }}
className={Device.android ? 'opacity-range-input--android' : 'opacity-range-input--ios'} type='range' min={0} max={100} step={1}
value={settings[currentTool].opacity}
onChange={(e) => setSettings({ opacity: parseInt(e.target.value) })}/>
</div>
</Sheet>
</>)}
<div className="draw-toolbar">
<div className="draw-toolbar-item">
<Button type='button' fill={currentTool === 'pen'} onClick={() => setTool('pen')}>
<SvgIcon symbolId={IconDrawPen.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<Button type='button' fill={currentTool === 'highlighter'} onClick={() => setTool('highlighter')}>
<SvgIcon symbolId={IconDrawHighlighter.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<Button type='button' sheetOpen={isDrawingTool ? ".draw-sheet--settings" : undefined} disabled={!isDrawingTool}>
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<circle cx="50%" cy="50%" r="8" fill={settings[currentTool]?.color || '#808080'}/>
</svg>
</Button>
</div>
<div className="draw-toolbar-item">
<div className='draw-toolbar-divider'/>
</div>
<div className="draw-toolbar-item">
<Button type='button' disabled={!enableErasing} fill={currentTool === 'eraser'} onClick={() => setTool('eraser')}>
<SvgIcon symbolId={IconClearObject.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<Button type='button' disabled={!enableErasing} onClick={() => setTool('eraseEntireScreen')}>
<SvgIcon symbolId={IconClearAll.id} className='icon icon-svg'/>
</Button>
</div>
<div className="draw-toolbar-item">
<div className='draw-toolbar-divider'/>
</div>
<div className="draw-toolbar-item">
<Button type='button' fill={currentTool === 'scroll'} onClick={() => setTool('scroll')} tabIndex='-1'>
<SvgIcon symbolId={IconScroll.id} className='icon icon-svg'/>
</Button>
</div>
</div>
</React.Fragment>
)
}
</React.Fragment>
)
}

View File

@ -90,7 +90,7 @@ class SearchView extends Component {
componentDidMount() {
this.$replace = $$('#idx-replace-val');
const $editor = $$('#editor_sdk');
const $editor = $$('#id_viewer_overlay, #ws-canvas-graphic-overlay');
this.onEditorTouchStart = this.onEditorTouchStart.bind(this);
this.onEditorTouchEnd = this.onEditorTouchEnd.bind(this);
@ -132,7 +132,7 @@ class SearchView extends Component {
}
componentWillUnmount() {
$$('#editor_sdk')
$$('#id_viewer_overlay, #ws-canvas-graphic-overlay')
.off('pointerdown', this.onEditorTouchStart)
.off('pointerup', this.onEditorTouchEnd);

View File

@ -79,15 +79,17 @@ const CollaborationView = props => {
}
}, []);
const initUrl = props.showOptions ? `/${props.showOptions}/` : '/collaboration-page/';
return (
!Device.phone ?
<Popover id="coauth-popover" className="popover__titled" onPopoverClosed={() => props.closeOptions('coauth')} closeByOutsideClick={false}>
<View style={{height: '430px'}} routes={routes} url='/collaboration-page/'>
<View style={{height: '430px'}} routes={routes} url={initUrl}>
<CollaborationPage />
</View>
</Popover> :
<Sheet className="coauth__sheet" onSheetClosed={() => props.closeOptions('coauth')}>
<View routes={routes} url='/collaboration-page/'>
<View routes={routes} url={initUrl}>
<CollaborationPage />
</View>
</Sheet>

View File

@ -149,6 +149,14 @@ body.theme-type-dark {
height: 26px;
}
.ios .subnavbar .subnavbar-inner .right a + a {
margin-left: 0;
}
.ios .subnavbar .subnavbar-inner {
padding-right: 0;
}
:root .theme-type-dark {
--f7-navbar-bg-color: #232323;
--f7-bars-bg-color-rgb: 35,35,35;
@ -156,26 +164,52 @@ body.theme-type-dark {
--f7-bars-translucent-opacity: 1;
}
.word-editor {
--skl-toolbar-icons: var(--toolbar-icons, #446995);
}
.md .word-editor {
--f7-navbar-bg-color: var(--background-navbar-word, #446995);
--f7-subnavbar-bg-color: var(--background-navbar-word, #446995);
--f7-subnavbar-height: 56px;
}
.cell-editor {
--skl-toolbar-icons: var(--toolbar-icons, #40865c);
}
.md .cell-editor {
--f7-navbar-bg-color: var(--background-navbar-cell, #40865c);
--f7-subnavbar-bg-color: var(--background-navbar-cell, #40865c);
--f7-subnavbar-height: 56px;
}
.slide-editor {
--skl-toolbar-icons: var(--toolbar-icons, #BE664F);
}
.md .slide-editor {
--f7-navbar-bg-color: var(--background-navbar-slide, #BE664F);
--f7-subnavbar-bg-color: var(--background-navbar-slide, #BE664F);
--f7-subnavbar-height: 56px;
}
.visio-editor {
--skl-toolbar-icons: var(--toolbar-icons, #444796);
}
.md .visio-editor {
--f7-navbar-bg-color: var(--background-navbar-visio, #444796);
--f7-subnavbar-bg-color: var(--background-navbar-visio, #444796);
--f7-subnavbar-height: 56px;
}
.md .theme-type-light {
--skl-toolbar-icons: var(--toolbar-icons, #fff);
}
.icon-svg {
width: 24px;
height: 24px;
fill: var(--skl-toolbar-icons);
}

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M12.5436 18C15.3109 18 17 16.5946 17 14.3063C17 12.5856 15.7601 11.3153 13.9991 11.1441V11.0721C15.3288 10.8559 16.3621 9.63964 16.3621 8.24324C16.3621 6.27027 14.8437 5 12.4897 5H7V18H12.5436ZM9.31806 6.81081H11.9146C13.2893 6.81081 14.071 7.45045 14.071 8.58559C14.071 9.79279 13.1635 10.4775 11.5463 10.4775H9.31806V6.81081ZM9.31806 16.1892V12.1261H11.9236C13.6936 12.1261 14.628 12.8198 14.628 14.1441C14.628 15.4775 13.7206 16.1892 12.0135 16.1892H9.31806Z"/>
</svg>

After

Width:  |  Height:  |  Size: 565 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M18.9014 16.1201L21.8242 18.6211C21.9349 18.7159 21.9988 18.8552 21.999 19.001C21.999 19.1468 21.9348 19.2859 21.8242 19.3809L18.9014 21.8818L18.5215 22.207L17.8711 21.4473L18.251 21.1221L20.1455 19.501H3.85547L5.75 21.123L6.12988 21.4473L5.47949 22.207L5.09961 21.8828L2.17676 19.3809C2.06611 19.2859 2.00196 19.1468 2.00195 19.001C2.00214 18.8551 2.06596 18.716 2.17676 18.6211L5.09961 16.1201L5.47949 15.7949L6.12988 16.5547L5.75 16.8799L3.85547 18.501H20.1455L18.251 16.8799L17.8711 16.5547L18.5215 15.7949L18.9014 16.1201ZM18.9951 3H14.6328V15.9971H13.6328V3H10.2705V15.9971H9.27051V10.2207H6.11035C3.84032 10.2207 2.00013 8.38035 2 6.11035C2.00002 3.84026 3.84026 2 6.11035 2H18.9951V3ZM6.11035 3C4.39254 3 3.00002 4.39255 3 6.11035C3.00013 7.82806 4.39261 9.2207 6.11035 9.2207H9.27051V3H6.11035Z"/>
</svg>

After

Width:  |  Height:  |  Size: 907 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M10 18L13 5H15L12 18H10Z"/>
</svg>

After

Width:  |  Height:  |  Size: 128 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9767 19C9.13025 19 7.15814 17.4413 7 15.0469H8.68372C8.84186 16.5117 10.2186 17.4789 12.1349 17.4789C13.9489 17.4789 15.2698 16.5117 15.2698 15.1784C15.2698 14.1421 14.6226 13.4669 13.1631 13H4V12H9.70758C8.10681 11.333 7.38141 10.3271 7.38141 8.83099C7.38141 6.57745 9.3349 5 12.1256 5C14.7953 5 16.7302 6.59625 16.8046 8.86853H15.1302C14.9814 7.41315 13.8186 6.52112 12.0698 6.52112C10.3303 6.52112 9.12091 7.43192 9.12091 8.75586C9.12091 9.77936 9.86511 10.3897 11.6884 10.8685L13.093 11.2441C13.9345 11.4572 14.6245 11.7047 15.1776 12H20V13H16.4087C16.8147 13.5368 17 14.1832 17 14.9718C17 17.4507 15.0651 19 11.9767 19Z"/>
</svg>

After

Width:  |  Height:  |  Size: 732 B

View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M7 5H9V12.4519C9 14.0634 10.1956 15.1595 12 15.1595C13.8044 15.1595 15 14.0634 15 12.4519V5H17V12.6401C17 15.2168 15.086 17 12 17C8.92242 17 7 15.2168 7 12.6401V5Z"/>
<path d="M17 20V19H7V20H17Z"/>
</svg>

After

Width:  |  Height:  |  Size: 298 B

View File

@ -1,4 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0138 14C9.18567 14 7.01647 15.4069 5.9043 17.2572C5.3423 18.1923 5.50366 18.562 5.60508 18.6903C5.75845 18.8844 6.11323 19 6.47655 19H12.0138V20H6.47655C6.00508 20 5.25793 19.8656 4.8186 19.3097C4.32732 18.688 4.4052 17.8077 5.0453 16.7428C6.33733 14.5931 8.83148 13 12.0138 13V14ZM12.0138 13C15.1962 13 17.6627 14.5931 18.9547 16.7428C19.5948 17.8077 19.6727 18.688 19.1814 19.3097C18.7421 19.8656 17.9949 20 17.5234 20H12.0138V19H17.5234C17.8868 19 18.2415 18.8844 18.3949 18.6903C18.4963 18.562 18.6577 18.1923 18.0957 17.2572C16.9835 15.4069 14.842 14 12.0138 14V13Z"/>
<path d="M12.0137 4.5C13.614 4.5 15.0205 6.00307 15.0205 8C15.0205 9.99693 13.614 11.5 12.0137 11.5C10.4134 11.4998 9.00781 9.99682 9.00781 8C9.00781 6.00318 10.4134 4.50016 12.0137 4.5Z"/>
<path d="M14.5204 8C14.5204 6.21528 13.278 5 12.0136 5C10.7493 5.00017 9.50773 6.2154 9.50773 8C9.50773 9.7846 10.7493 10.9998 12.0136 11V12C10.0773 11.9998 8.50773 10.209 8.50773 8C8.50773 5.79096 10.0773 4.00016 12.0136 4C13.95 4 15.5204 5.79086 15.5204 8L15.5155 8.20605C15.4215 10.3194 13.8894 12 12.0136 12V11C13.278 11 14.5204 9.78472 14.5204 8Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 908 B

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,4 +0,0 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0138 14C9.18567 14 7.01647 15.4069 5.9043 17.2572C5.3423 18.1923 5.50366 18.562 5.60508 18.6903C5.75845 18.8844 6.11323 19 6.47655 19H12.0138V20H6.47655C6.00508 20 5.25793 19.8656 4.8186 19.3097C4.32732 18.688 4.4052 17.8077 5.0453 16.7428C6.33733 14.5931 8.83148 13 12.0138 13V14ZM12.0138 13C15.1962 13 17.6627 14.5931 18.9547 16.7428C19.5948 17.8077 19.6727 18.688 19.1814 19.3097C18.7421 19.8656 17.9949 20 17.5234 20H12.0138V19H17.5234C17.8868 19 18.2415 18.8844 18.3949 18.6903C18.4963 18.562 18.6577 18.1923 18.0957 17.2572C16.9835 15.4069 14.842 14 12.0138 14V13Z"/>
<path d="M12.0137 4.5C13.614 4.5 15.0205 6.00307 15.0205 8C15.0205 9.99693 13.614 11.5 12.0137 11.5C10.4134 11.4998 9.00781 9.99682 9.00781 8C9.00781 6.00318 10.4134 4.50016 12.0137 4.5Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 908 B

View File

@ -59,7 +59,6 @@
--canvas-high-contrast: #000;
//--canvas-high-contrast-disabled: #000;
--canvas-cell-border: fade(#000, 10%);
--canvas-cell-title-border: #757575;
--canvas-cell-title-border-hover: #858585;
--canvas-cell-title-border-selected: #999;

View File

@ -56,7 +56,6 @@
--canvas-high-contrast: #000;
//--canvas-high-contrast-disabled: #666;
--canvas-cell-border: #999;
--canvas-cell-title-text: fade(#000, 80%);
--canvas-cell-title-background: #f7f7f7;
--canvas-cell-title-background-selected: #cfcfcf;

View File

@ -685,6 +685,16 @@
background-color: @background-warning;
margin-left: 10px;
}
.popover {
box-shadow: 0 10px 100px 0 rgba(0, 0, 0, 0.3);
}
.sheet-modal, .dropdown-list-popup {
box-shadow: 0 8px 28px 0 rgba(0, 0, 0, 0.16);
}
}

View File

@ -629,6 +629,9 @@
}
.title, a {
color: @text-normal;
.icon-svg.done {
fill: @brand-word;
}
}
}
@ -765,4 +768,9 @@
display: inline-block;
}
}
.sheet-modal.calendar, .dropdown-list-popup {
box-shadow:0 3.75px 11px 0 rgba(0, 0, 0, 0.19),
0 0.5px 5px 0 rgba(0, 0, 0, 0.039);
}
}

View File

@ -122,6 +122,10 @@
transition: all .3s;
}
.popover-backdrop, .sheet-backdrop, .popup-backdrop {
background-color: transparent;
}
.disabled, [disabled] {
opacity: .55;
pointer-events: none;

View File

@ -56,10 +56,28 @@
grid-template-columns: repeat(10, 1fr);
gap: 2px;
@media (min-width: 550px) {
gap: 4px;
}
&-item {
border: 1px solid;
aspect-ratio: 1;
border-color: @background-menu-divider;
&[data-selected="true"] {
position: relative;
border: 2px solid @background-primary;
&:after {
content: '';
position: absolute;
inset: -5px;
background-color: @brandColor;
z-index: -1;
border-radius: 4px;
}
}
}
&-add {
@ -70,8 +88,9 @@
aspect-ratio: 1;
border: 2px solid @background-primary;
i {
background-color: @brandColor;
svg {
width: 24px;
height: 24px;
}
&:after {
@ -110,7 +129,6 @@
display: flex;
justify-content: space-between;
align-items: center;
padding-inline: 10px;
width: 100%;
@media (min-width: 550px) {
@ -125,6 +143,14 @@
justify-content: center;
}
&:first-child {
margin-left: 10px;
}
&:last-child {
margin-right: 10px;
}
button {
display: flex;
padding: 0;
@ -138,6 +164,13 @@
color: @brandColor;
background-color: @button-active-opacity;
}
&:after {
content: '';
position: absolute;
inset: -4px;
z-index: -1;
}
}
}

View File

@ -0,0 +1,4 @@
.icon-svg {
width: 24px;
height: 24px;
}

View File

@ -2,7 +2,5 @@
@import "./material/icons";
.icon-svg {
width: 24px;
height: 24px;
fill: @brandColor;
}

View File

@ -912,6 +912,10 @@ DE.ApplicationController = new(function(){
case Asc.c_oAscError.ID.SessionToken: // don't show error message
return;
case Asc.c_oAscError.ID.CopyDisabled:
message= me.errorCopyDisabled;
break;
default:
// message = me.errorDefaultMessage.replace('%1', id);
// break;
@ -1201,6 +1205,7 @@ DE.ApplicationController = new(function(){
textCancel: 'Cancel',
txtSecurityWarningLink: 'This document is trying to connect to %1.<br>If you trust this site, press \"OK\" while holding down the ctrl key.',
txtSecurityWarningOpenFile: 'This document is trying to open file dialog, press \"OK\" to open.',
txtSecurityWarningLinkOk: 'This document is trying to connect to %1.<br>If you trust this site, press \"OK\".'
txtSecurityWarningLinkOk: 'This document is trying to connect to %1.<br>If you trust this site, press \"OK\".',
errorCopyDisabled: 'For security reasons, the contents of this document cannot be copied to the clipboard.'
}
})();

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Herunterladen ist fehlgeschlagen.",
"DE.ApplicationController.downloadTextText": "Dokument wird heruntergeladen...",
"DE.ApplicationController.errorAccessDeny": "Sie versuchen, eine Aktion durchzuführen, für die Sie keine Rechte haben.<br>Bitte wenden Sie sich an Ihren Document Serveradministrator.",
"DE.ApplicationController.errorCopyDisabled": "Aus Sicherheitsgründen darf der Inhalt dieses Dokuments nicht kopiert werden.",
"DE.ApplicationController.errorDefaultMessage": "Fehlercode: %1",
"DE.ApplicationController.errorEditingDownloadas": "Fehler bei der Bearbeitung.<br>Speichern Sie eine Kopie dieser Datei auf Ihrem Computer, indem Sie auf \"Herunterladen als...\" klicken.",
"DE.ApplicationController.errorFilePassProtect": "Das Dokument ist kennwortgeschützt und kann nicht geöffnet werden.",
@ -53,8 +54,9 @@
"DE.ApplicationController.txtClose": "Schließen",
"DE.ApplicationController.txtEmpty": "(Leer)",
"DE.ApplicationController.txtNo": "Nein",
"DE.ApplicationController.txtOpenWarning": "Das Klicken auf diesen Link kann Ihr Gerät und Ihre Daten schädigen. Um Ihren Computer zu schützen, klicken Sie nur auf Hyperlinks aus vertrauenswürdigen Quellen. Dieser Ort ist möglicherweise unsicher:<br>%1<br>Möchten Sie wirklich fortfahren?",
"DE.ApplicationController.txtOpenWarning": "Das Klicken auf diesen Link kann Ihrem Gerät und Ihren Daten schaden. Um Ihren Computer zu schützen, klicken Sie nur auf Links aus vertrauenswürdigen Quellen. Diese Seite ist möglicherweise unsicher:<br>%1<br>Möchten Sie fortfahren?",
"DE.ApplicationController.txtPressLink": "Drücken Sie %1 und klicken Sie auf den Link",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Dieses Dokument versucht, eine Verbindung zu %1 herzustellen.<br>Wenn Sie dieser Website vertrauen, drücken Sie OK.",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Dieses Dokument versucht, den Dateidialog zu öffnen. Klicken Sie zum Öffnen auf OK.",
"DE.ApplicationController.txtYes": "Ja",
"DE.ApplicationController.unknownErrorText": "Unbekannter Fehler.",

View File

@ -53,7 +53,7 @@
"DE.ApplicationController.txtClose": "Κλείσιμο",
"DE.ApplicationController.txtEmpty": "(Κενό)",
"DE.ApplicationController.txtNo": "Όχι",
"DE.ApplicationController.txtOpenWarning": "Το κλικ σε αυτόν τον σύνδεσμο μπορεί να είναι επιβλαβές για τη συσκευή και τα δεδομένα σας. Για να προστατεύσετε τον υπολογιστή σας, κάντε κλικ μόνο σε αυτούς τους υπερσυνδέσμους από αξιόπιστες πηγές. Αυτή η τοποθεσία μπορεί να είναι ανασφαλής:<br><br>%1<br><br>Είστε σίγουροι ότι θέλετε να συνεχίσετε;",
"DE.ApplicationController.txtOpenWarning": "Το κλικ σε αυτόν τον υπερσύνδεσμο μπορεί να είναι επιβλαβές για τη συσκευή και τα δεδομένα σας. Για να προστατεύσετε τον υπολογιστή σας, κάντε κλικ μόνο στους υπερσυνδέσμους από αξιόπιστες πηγές. Αυτή η τοποθεσία μπορεί να μην είναι ασφαλής:<br><br>%1<br><br>Είστε σίγουροι ότι θέλετε να συνεχίσετε;",
"DE.ApplicationController.txtPressLink": "Πατήστε %1 και κάντε κλικ στο σύνδεσμο",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Αυτό το έγγραφο προσπαθεί να ανοίξει το παράθυρο διαλόγου αρχείου, πατήστε \"Εντάξει\" για να ανοίξετε.",
"DE.ApplicationController.txtYes": "Ναι",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Download failed.",
"DE.ApplicationController.downloadTextText": "Downloading document...",
"DE.ApplicationController.errorAccessDeny": "You are trying to perform an action you do not have rights for.<br>Please contact your Document Server administrator.",
"DE.ApplicationController.errorCopyDisabled": "For security reasons, the contents of this document cannot be copied.",
"DE.ApplicationController.errorDefaultMessage": "Error code: %1",
"DE.ApplicationController.errorEditingDownloadas": "An error occurred during the work with the document.<br>Use the 'Download as...' option to save the file backup copy to your computer hard drive.",
"DE.ApplicationController.errorFilePassProtect": "The file is password protected and cannot be opened.",
@ -53,7 +54,7 @@
"DE.ApplicationController.txtClose": "Close",
"DE.ApplicationController.txtEmpty": "(Empty)",
"DE.ApplicationController.txtNo": "No",
"DE.ApplicationController.txtOpenWarning": "Clicking this link can be harmful to your device and data. To protect you computer, click only those hyperlinks from trusted sources. This location may be unsafe:<br>%1<br>Are you sure you want to continue?",
"DE.ApplicationController.txtOpenWarning": "Clicking this link can be harmful to your device and data. To protect you computer, click only those links from trusted sources. This location may be unsafe:<br>%1<br>Are you sure you want to continue?",
"DE.ApplicationController.txtPressLink": "Press %1 and click link",
"DE.ApplicationController.txtSecurityWarningLinkOk": "This document is trying to connect to %1.<br>If you trust this site, press \"OK\".",
"DE.ApplicationController.txtSecurityWarningOpenFile": "This document is trying to open file dialog, press \"OK\" to open.",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Échec du téléchargement.",
"DE.ApplicationController.downloadTextText": "Téléchargement du document...",
"DE.ApplicationController.errorAccessDeny": "Vous tentez d'exéсuter une action pour laquelle vous ne disposez pas des droits.<br>Veuillez contacter l'administrateur de Document Server.",
"DE.ApplicationController.errorCopyDisabled": "Pour des raisons de sécurité, le contenu de ce document ne peut être copié.",
"DE.ApplicationController.errorDefaultMessage": "Code d'erreur: %1",
"DE.ApplicationController.errorEditingDownloadas": "Une erreur s'est produite lors du travail avec le document.<br>Utilisez l'option 'Télécharger comme...' pour enregistrer une copie de sauvegarde du fichier sur le disque dur de votre ordinateur.",
"DE.ApplicationController.errorFilePassProtect": "Le fichier est protégé par le mot de passe et ne peut pas être ouvert.",
@ -53,8 +54,9 @@
"DE.ApplicationController.txtClose": "Fermer",
"DE.ApplicationController.txtEmpty": "(Vide)",
"DE.ApplicationController.txtNo": "Non",
"DE.ApplicationController.txtOpenWarning": "Cliquer sur ce lien peut endommager votre appareil et vos données. Pour protéger votre ordinateur, ne cliquez que sur les liens provenant de sources fiables. Cet emplacement peut être dangereux :<br>%1<br>Voulez-vous continuer ?",
"DE.ApplicationController.txtOpenWarning": "Accès via ce lien peut endommager votre appareil et vos données. Pour protéger votre ordinateur, ne cliquez que sur les liens provenant de sources fiables. Cet emplacement peut être dangereux :<br>%1<br>Voulez-vous continuer ?",
"DE.ApplicationController.txtPressLink": "Appuyez sur %1 et cliquez sur le lien",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Ce document tente de se connecter à %1.<br>Si vous faites confiance à ce site, appuyez sur « OK ».",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Ce document tente d'ouvrir la boîte de dialogue du fichier, cliquez « OK » pour l'ouvrir.",
"DE.ApplicationController.txtYes": "Oui",
"DE.ApplicationController.unknownErrorText": "Erreur inconnue.",

View File

@ -34,6 +34,7 @@
"DE.ApplicationController.openErrorText": ".קרתה שגיאה במהלך פתיחת הקובץ",
"DE.ApplicationController.scriptLoadError": "החיבור איטי מדי, לא ניתן היה לטעון חלק מהרכיבים. טען מחדש את העמוד בבקשה.",
"DE.ApplicationController.textAnonymous": "אנונימי ",
"DE.ApplicationController.textCancel": "ביטול",
"DE.ApplicationController.textClear": "נקה את כל השדות",
"DE.ApplicationController.textConvertFormDownload": "הורדת קובץ כטופס PDF שניתן למילוי.",
"DE.ApplicationController.textCtrl": "Ctrl",
@ -43,6 +44,7 @@
"DE.ApplicationController.textLoadingDocument": "מוריד מסמך",
"DE.ApplicationController.textNext": "השדה הבא",
"DE.ApplicationController.textOf": "שֶׁל",
"DE.ApplicationController.textOk": "אישור",
"DE.ApplicationController.textRequired": "מלא את כל השדות הנדרשים לשליחת הטופס.",
"DE.ApplicationController.textSubmit": "שליחה ",
"DE.ApplicationController.textSubmited": "<b>הטופס נשלח בהצלחה</b><br>לחץ כדי לסגור את הטיפ",
@ -50,7 +52,10 @@
"DE.ApplicationController.titleLicenseNotActive": "רשיון לא פעיל",
"DE.ApplicationController.txtClose": "סגור",
"DE.ApplicationController.txtEmpty": "(ריק)",
"DE.ApplicationController.txtNo": "לא",
"DE.ApplicationController.txtPressLink": "הקש %1 ולחץ על קישור",
"DE.ApplicationController.txtSecurityWarningOpenFile": "מסמך זה מנסה לפתוח ד-שיח, נא ללחוץ על \"אישור\" כדי לפתוח.",
"DE.ApplicationController.txtYes": "כן",
"DE.ApplicationController.unknownErrorText": "שגיאה לא ידועה.",
"DE.ApplicationController.unsupportedBrowserErrorText": "הדפדפן שלך לא נתמך.",
"DE.ApplicationController.waitText": "…נא המתן",

View File

@ -53,7 +53,7 @@
"DE.ApplicationController.txtClose": "Chiudi",
"DE.ApplicationController.txtEmpty": "(Vuoto)",
"DE.ApplicationController.txtNo": "No",
"DE.ApplicationController.txtOpenWarning": "Cliccare su questo link può danneggiare il tuo dispositivo e i tuoi dati. <br> Sei sicuro di voler continuare?",
"DE.ApplicationController.txtOpenWarning": "Cliccare su questo link può essere dannoso per il tuo dispositivo e i tuoi dati. Per proteggere il tuo computer, clicca solo sui link provenienti da fonti affidabili. Questa posizione potrebbe non essere sicura:<br>%1<br>Sei sicuro di voler continuare?",
"DE.ApplicationController.txtPressLink": "Premi %1 e clicca sul collegamento",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Questo documento sta tentando di aprire la finestra di dialogo del file, premi \"OK\" per aprirla.",
"DE.ApplicationController.txtYes": "Sì",

View File

@ -53,7 +53,7 @@
"DE.ApplicationController.txtClose": "닫기",
"DE.ApplicationController.txtEmpty": "(없음)",
"DE.ApplicationController.txtNo": "아니오",
"DE.ApplicationController.txtOpenWarning": "이 링크를 클릭하는 것은 장치와 데이터에 해가 될 수 있습니다. 컴퓨터를 보호하려면 신뢰할 수 있는 출처의 하이퍼링크만 클릭하세요. 이 위치는 안전하지 않을 수 있습니다:<br>%1<br>계속하시겠습니까?",
"DE.ApplicationController.txtOpenWarning": "이 링크를 클릭하는 것은 장치와 데이터에 해로울 수 있습니다. 컴퓨터를 보호하려면 신뢰할 수 있는 출처의 하이퍼링크만 클릭하세요. 이 위치는 안전하지 않을 수 있습니다:<br>%1<br>계속하시겠습니까?",
"DE.ApplicationController.txtPressLink": "%1 키를 누른 상태에서 링크 클릭",
"DE.ApplicationController.txtSecurityWarningOpenFile": "이 문서가 파일 대화상자를 열려고 합니다. 열려면 \"확인\"을 누르세요.",
"DE.ApplicationController.txtYes": "네",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Transferência falhou.",
"DE.ApplicationController.downloadTextText": "Transferindo documento...",
"DE.ApplicationController.errorAccessDeny": "Você está tentando executar uma ação para a qual não tem direitos.<br>Entre em contato com o administrador do Document Server.",
"DE.ApplicationController.errorCopyDisabled": "Por motivos de segurança, o conteúdo deste documento não pode ser copiado.",
"DE.ApplicationController.errorDefaultMessage": "Código do erro: %1",
"DE.ApplicationController.errorEditingDownloadas": "Ocorreu um erro durante o trabalho com o documento.<br>Utilizar a opção 'Download as...' para salvar a cópia de backup do arquivo no disco rígido do seu computador.",
"DE.ApplicationController.errorFilePassProtect": "O documento é protegido por senha e não pode ser aberto.",
@ -53,8 +54,9 @@
"DE.ApplicationController.txtClose": "Fechar",
"DE.ApplicationController.txtEmpty": "(Vazio)",
"DE.ApplicationController.txtNo": "Não",
"DE.ApplicationController.txtOpenWarning": "Clicar neste link pode ser prejudicial ao seu dispositivo e aos seus dados.<br> Tem certeza de que deseja continuar?",
"DE.ApplicationController.txtOpenWarning": "Clicar neste link pode ser prejudicial ao seu dispositivo e aos seus dados. Para proteger seu computador, clique apenas em hiperlinks de fontes confiáveis. Este local pode não ser seguro:<br>%1<br>Tem certeza de que deseja continuar?",
"DE.ApplicationController.txtPressLink": "Pressione %1 e clique no link",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Este documento está tentando se conectar a %1.<br>Se você confia neste site, pressione \"OK\".",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Este documento está tentando abrir a caixa de diálogo de arquivo, pressione \"OK\" para abrir.",
"DE.ApplicationController.txtYes": "Sim",
"DE.ApplicationController.unknownErrorText": "Erro desconhecido.",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Descărcare eșuată.",
"DE.ApplicationController.downloadTextText": "Descărcarea documentului...",
"DE.ApplicationController.errorAccessDeny": "Nu aveți dreptul să efectuați acțiunea pe care doriți.<br>Contactați administratorul dumneavoastră de Server Documente.",
"DE.ApplicationController.errorCopyDisabled": "Din motive de securitate, conținutul acestui document nu poate fi copiat.",
"DE.ApplicationController.errorDefaultMessage": "Codul de eroare: %1",
"DE.ApplicationController.errorEditingDownloadas": "S-a produs o eroare în timpul editării documentului.<br>Pentru copierea de rezervă pe PC utilizați opțiunea Descărcare ca...",
"DE.ApplicationController.errorFilePassProtect": "Fișierul este protejat cu parolă și deaceea nu poate fi deschis.",
@ -55,6 +56,7 @@
"DE.ApplicationController.txtNo": "Nu",
"DE.ApplicationController.txtOpenWarning": "Accesarea acestui link poate dăuna dispozitivului sau datelor dvs. Pentru a vă proteja calculatorul, evitați să dați click pe linkuri de la surse necunoscute. Această locație poate fi nesigură:<br>%1<br>Sigur doriti sa continuati? ",
"DE.ApplicationController.txtPressLink": "Apăsați %1 și faceți clic pe link",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Acest document încearcă să se conecteze la %1.<br>Dacă este un site de încredere, apăsați OK.",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Acest document încearcă să deschidă fereastra de dialog, apăsați OK pentru a-l deschide.",
"DE.ApplicationController.txtYes": "Da",
"DE.ApplicationController.unknownErrorText": "Eroare necunoscută.",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Загрузка не удалась.",
"DE.ApplicationController.downloadTextText": "Загрузка документа...",
"DE.ApplicationController.errorAccessDeny": "Вы пытаетесь выполнить действие, на которое у вас нет прав.<br>Пожалуйста, обратитесь к администратору Сервера документов.",
"DE.ApplicationController.errorCopyDisabled": "В целях безопасности содержимое этого документа нельзя скопировать.",
"DE.ApplicationController.errorDefaultMessage": "Код ошибки: %1",
"DE.ApplicationController.errorEditingDownloadas": "В ходе работы с документом произошла ошибка.<br>Используйте опцию 'Скачать как...', чтобы сохранить резервную копию файла на жесткий диск компьютера.",
"DE.ApplicationController.errorFilePassProtect": "Файл защищен паролем и не может быть открыт.",
@ -55,6 +56,7 @@
"DE.ApplicationController.txtNo": "Нет",
"DE.ApplicationController.txtOpenWarning": "Переход по этой ссылке может нанести вред вашему устройству и данным. Чтобы защитить свой компьютер, переходите только по ссылкам из проверенных источников. Этот сайт может быть небезопасным:<br>%1<br>Вы действительно хотите продолжить?",
"DE.ApplicationController.txtPressLink": "Нажмите %1 и щелкните по ссылке",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Этот документ пытается подключиться к %1.<br>Если вы доверяете этому сайту, нажмите \"ОК\".",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Этот документ пытается открыть диалоговое окно файла, нажмите \"OK\", чтобы открыть.",
"DE.ApplicationController.txtYes": "Да",
"DE.ApplicationController.unknownErrorText": "Неизвестная ошибка.",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Sharkimi dështoi.",
"DE.ApplicationController.downloadTextText": "Dokumenti po shkarkohet...",
"DE.ApplicationController.errorAccessDeny": "Ju po përpiqeni të kryeni një veprim për të cilin nuk keni të drejta.<br>Ju lutem, kontaktoni administratorin e serverit të dokumenteve. ",
"DE.ApplicationController.errorCopyDisabled": "Për arsye sigurie, përmbajtja e këtij dokumenti nuk mund të kopjohet.",
"DE.ApplicationController.errorDefaultMessage": "Kodi gabim: %1",
"DE.ApplicationController.errorEditingDownloadas": "Ndodhi një gabim gjatë punës me dokumentin.<br>Përdorni opsionin 'Shkarko si...' për të ruajtur kopjen rezervë të skedarit në hard diskun e kompjuterit tuaj.",
"DE.ApplicationController.errorFilePassProtect": "Skedari eshte i mbrojtuar me fjalëkalim dhe nuk mund të hapet.",
@ -55,6 +56,7 @@
"DE.ApplicationController.txtNo": "Jo",
"DE.ApplicationController.txtOpenWarning": "Klikimi i kësaj lidhjeje mund të jetë i dëmshëm për pajisjen dhe të dhënat tuaja. Për të mbrojtur kompjuterin tuaj, klikoni vetëm ato hiperlidhje nga burime të besueshme. Kjo vendndodhje mund të jetë e pasigurt:<br>%1<br>A jeni të sigurt që dëshironi të vazhdoni?",
"DE.ApplicationController.txtPressLink": "Shtypni %1 dhe klikoni lidhjen.",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Ky dokument po përpiqet të lidhet me %1.<br>Nëse i besoni kësaj faqeje, shtypni \"Në rregull\".",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Ky dokument po përpiqet të hapë dialogun e skedarit, shtypni \"OK\" për ta hapur.",
"DE.ApplicationController.txtYes": "Po",
"DE.ApplicationController.unknownErrorText": "Gabim i panjohur",

View File

@ -14,6 +14,7 @@
"DE.ApplicationController.downloadErrorText": "Preuzimanje neuspešno.",
"DE.ApplicationController.downloadTextText": "Preuzimanje dokumenta...",
"DE.ApplicationController.errorAccessDeny": "Pokušavate da izvedete akciju na koju nemate prava.<br>Molimo kontaktirajte svog Dokument Server administratora.",
"DE.ApplicationController.errorCopyDisabled": "Zbog sigurnosnih razloga, sadržaj ovog dokumenta ne može biti kopiran.",
"DE.ApplicationController.errorDefaultMessage": "Greška kod: %1",
"DE.ApplicationController.errorEditingDownloadas": "Pojavila se greška u toku rada sa dokumentom.<br>Koristite \"Preuzmi kao...\" opciju da sačuvate rezervnu kopiju fajla na hard drajv vašeg kompjutera.",
"DE.ApplicationController.errorFilePassProtect": "Fajl je zaštićen lozinkom i ne može biti otvoren.",
@ -53,8 +54,9 @@
"DE.ApplicationController.txtClose": "Zatvori",
"DE.ApplicationController.txtEmpty": "(Prazno)",
"DE.ApplicationController.txtNo": "Ne",
"DE.ApplicationController.txtOpenWarning": "Klik na ovaj link može biti štetan za vaš uređaj i podatke. Da biste zaštitili svoj računar, klikćite samo na hiperveze koje dolaze iz pouzdanih izvora. Ova lokacija može biti nesigurna:<br><br>{0}<br><br>Da li ste sigurni da želite da nastavite?",
"DE.ApplicationController.txtOpenWarning": "Klik na ovaj link može biti štetan za vaš uređaj i podatke. Da biste zaštitili svoj računar, klikćite samo na hiperveze koje dolaze iz pouzdanih izvora. Ova lokacija može biti nesigurna:<br><br>%1<br><br>Da li ste sigurni da želite da nastavite?",
"DE.ApplicationController.txtPressLink": "Pritisni %1 i klikni link",
"DE.ApplicationController.txtSecurityWarningLinkOk": "Ovaj dokument pokušava da se poveže sa %1.<br>Ako verujete ovoj veb lokaciji, pritisnite „OK“.",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Ovaj dokument pokušava da otvori dijalog fajla, pritisnite \"OK\" da otvorite.",
"DE.ApplicationController.txtYes": "Da",
"DE.ApplicationController.unknownErrorText": "Nepoznata greška.",

View File

@ -1,35 +1,74 @@
{
"common.view.modals.txtCopy": "Sao chép vào khay nhớ tạm",
"common.view.modals.txtCopy": "Sao chép vào bộ nhớ tạm",
"common.view.modals.txtEmbed": "Nhúng",
"common.view.modals.txtHeight": "Chiều cao",
"common.view.modals.txtIncorrectPwd": "Mật khẩu không đúng",
"common.view.modals.txtOpenFile": "Nhập mật khẩu để mở tệp",
"common.view.modals.txtShare": "Chia sẻ đường liên kết",
"common.view.modals.txtTitleProtected": "Tệp được bảo vệ",
"common.view.modals.txtWidth": "Chiều rộng",
"common.view.SearchBar.textFind": "Tìm kiếm",
"DE.ApplicationController.convertationErrorText": "Chuyển đổi không thành công.",
"DE.ApplicationController.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.",
"DE.ApplicationController.criticalErrorTitle": "Lỗi",
"DE.ApplicationController.downloadErrorText": "Tải về không thành công.",
"DE.ApplicationController.downloadErrorText": "Tải xuống không thành công.",
"DE.ApplicationController.downloadTextText": "Đang tải tài liệu...",
"DE.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.<br>Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.",
"DE.ApplicationController.errorDefaultMessage": "Mã lỗi: %1",
"DE.ApplicationController.errorEditingDownloadas": "Đã xảy ra lỗi trong quá trình làm việc với tài liệu.<br>Hãy sử dụng tùy chọn 'Tải xuống dưới dạng...' để lưu bản sao lưu tệp vào ổ cứng máy tính của bạn.",
"DE.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.",
"DE.ApplicationController.errorFileSizeExceed": "Kích thước tệp vượt quá giới hạn được đặt cho máy chủ của bạn.<br>Vui lòng liên hệ với quản trị viên Máy Chủ Tài Liệu của bạn để biết chi tiết.",
"DE.ApplicationController.errorForceSave": "Đã xảy ra lỗi khi lưu tệp. Vui lòng sử dụng tùy chọn 'Tải xuống dưới dạng' để lưu tệp vào ổ cứng máy tính của bạn hoặc thử lại sau.",
"DE.ApplicationController.errorInconsistentExt": "Đã xảy ra lỗi khi mở tệp.<br>Nội dung tệp không khớp với phần mở rộng tệp.",
"DE.ApplicationController.errorInconsistentExtDocx": "Đã xảy ra lỗi khi mở tệp.<br>Nội dung tệp tương ứng với tài liệu văn bản (ví dụ: docx), nhưng tệp có phần mở rộng không nhất quán: %1.",
"DE.ApplicationController.errorInconsistentExtPdf": "Xảy ra lỗi khi mở tệp.<br>Nội dung tệp tương ứng với một trong các định dạng sau: pdf/djvu/xps/oxps, nhưng tệp có phần mở rộng không nhất quán: %1.",
"DE.ApplicationController.errorInconsistentExtPptx": "Đã xảy ra lỗi khi mở tệp.<br>Nội dung tệp tương ứng với bản trình bày (ví dụ: pptx), nhưng tệp có phần mở rộng không nhất quán: %1.",
"DE.ApplicationController.errorInconsistentExtXlsx": "Đã xảy ra lỗi khi mở tệp.<br>Nội dung tệp tương ứng với bảng tính (ví dụ: xlsx), nhưng tệp có phần mở rộng không nhất quán: %1.",
"DE.ApplicationController.errorLoadingFont": "Phông chữ không được tải.<br>Vui lòng liên hệ với quản trị viên Máy Chủ Tài Liệu của bạn.",
"DE.ApplicationController.errorSubmit": "Gửi không thành công.",
"DE.ApplicationController.errorToken": "Token bảo mật tài liệu không được định dạng chính xác.<br>Vui lòng liên hệ với quản trị viên Máy Chủ Tài Liệu của bạn.",
"DE.ApplicationController.errorTokenExpire": "Token bảo mật tài liệu đã hết hạn.<br>Vui lòng liên hệ với quản trị viên Máy Chủ Tài Liệu của bạn.",
"DE.ApplicationController.errorUpdateVersionOnDisconnect": "Kết nối đã được khôi phục và phiên bản tệp đã được thay đổi.<br>Trước khi có thể tiếp tục làm việc, bạn cần tải xuống tệp hoặc sao chép nội dung của tệp để đảm bảo không có gì bị mất, sau đó tải lại trang này.",
"DE.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.",
"DE.ApplicationController.notcriticalErrorTitle": "Cảnh báo",
"DE.ApplicationController.openErrorText": "Xảy ra lỗi khi mở tệp",
"DE.ApplicationController.scriptLoadError": "Kết nối quá chậm, không thể tải một số thành phần. Vui lòng tải lại trang.",
"DE.ApplicationController.textAnonymous": "Ẩn danh",
"DE.ApplicationController.textDownloadPdf": "Tải về PDF",
"DE.ApplicationController.textCancel": "Hủy",
"DE.ApplicationController.textClear": "Xóa tất cả các trường",
"DE.ApplicationController.textConvertFormDownload": "Tải xuống tệp dưới dạng PDF có thể điền để có thể điền vào.",
"DE.ApplicationController.textCtrl": "Ctrl",
"DE.ApplicationController.textDownloadPdf": "Tải xuống PDF",
"DE.ApplicationController.textGotIt": "Hiểu rồi",
"DE.ApplicationController.textGuest": "Khách",
"DE.ApplicationController.textLoadingDocument": "Đang tải tài liệu",
"DE.ApplicationController.textOf": "trên",
"DE.ApplicationController.textNext": "Trường tiếp theo",
"DE.ApplicationController.textOf": "của",
"DE.ApplicationController.textOk": "OK",
"DE.ApplicationController.textRequired": "Điền vào tất cả các trường bắt buộc để gửi biểu mẫu.",
"DE.ApplicationController.textSubmit": "Gửi",
"DE.ApplicationController.textSubmited": "<b>Đã gửi biểu mẫu thành công</b><br>Bấm để đóng hộp thoại",
"DE.ApplicationController.titleLicenseExp": "Giấy phép hết hạn",
"DE.ApplicationController.titleLicenseNotActive": "Giấy phép không có hiệu lực",
"DE.ApplicationController.txtClose": "Đóng",
"DE.ApplicationController.txtEmpty": "(Trống)",
"DE.ApplicationController.txtNo": "Không",
"DE.ApplicationController.txtOpenWarning": "Việc nhấp vào liên kết này có thể gây hại cho thiết bị và dữ liệu của bạn. Để bảo vệ máy tính của bạn, chỉ nhấp vào các liên kết đó từ các nguồn đáng tin cậy. Vị trí này có thể không an toàn:<br>%1<br>Bạn có chắc chắn muốn tiếp tục không?",
"DE.ApplicationController.txtPressLink": "Nhấn %1 và nhấp vào liên kết",
"DE.ApplicationController.txtSecurityWarningOpenFile": "Tài liệu này đang cố gắng mở hộp thoại tập tin, nhấn \"OK\" để mở.",
"DE.ApplicationController.txtYes": "Có",
"DE.ApplicationController.unknownErrorText": "Lỗi không xác định.",
"DE.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.",
"DE.ApplicationController.waitText": "Vui lòng chờ...",
"DE.ApplicationController.warnLicenseBefore": "Giấy phép không hoạt động. Vui lòng liên hệ với quản trị viên của bạn.",
"DE.ApplicationController.warnLicenseExp": "Giấy phép của bạn đã hết hạn. Vui lòng cập nhật giấy phép của bạn và làm mới trang.",
"DE.ApplicationView.txtDownload": "Tải về",
"DE.ApplicationView.txtDownloadDocx": "Tải xuống như DOCX",
"DE.ApplicationView.txtDownloadPdf": "Tải xuống như PDF",
"DE.ApplicationView.txtEmbed": "Nhúng",
"DE.ApplicationView.txtFileLocation": "Mở vị trí tệp",
"DE.ApplicationView.txtFullScreen": "Toàn màn hình",
"DE.ApplicationView.txtPrint": "In",
"DE.ApplicationView.txtSearch": "Tìm kiếm",
"DE.ApplicationView.txtShare": "Chia sẻ"
}

Some files were not shown because too many files have changed in this diff Show More