Skip to content

Releases: se7enxweb/expui

v1.0.0.19

Choose a tag to compare

@se7enxweb se7enxweb released this 29 Oct 20:02
  • Updated: One copyright notice, Exponential Foundation and 7x.

Upgrading: composer update and clear the caches.

v1.0.0.18

Choose a tag to compare

@se7enxweb se7enxweb released this 29 Oct 07:07
  • Added: Translations into 59 more languages: aka-GH, arc-IQ, asm-IN, aze-AZ, bel-BY, bho-IN, bod-CN, ceb-PH, che-RU, ckb-IQ, cym-GB, eng-AU, eus-ES, fil-PH, ful-SN, gla-GB, glg-ES, haw-US, huy-IL, hye-AM, ind-ID, jav-ID, kat-GE, kaz-KZ, khm-KH, kik-KE, kin-RW, kir-KG, lao-LA, lin-CD, ltz-LU, lug-UG, mai-IN, mkd-MK, mlg-MG, mon-MN, mri-NZ, msa-MY, mya-MM, nep-NP, orm-ET, pcm-NG, pnb-PK, run-BI, sin-LK, sna-ZW, snd-PK, sun-ID, syr-IQ, tat-RU, tgk-TJ, tha-TH, tir-ET, tuk-TM, uig-CN, uzb-UZ, vie-VN, wol-SN and yid-US.

Upgrading: composer update; clear the translation cache.

v1.0.0.17

Choose a tag to compare

@se7enxweb se7enxweb released this 26 Oct 11:52
  • Added: Chinese translations in Simplified (chi-CN) and Traditional (chi-TW) script; chi-HK falls back to chi-TW, from ekked's pull request #14.
  • Added: Translations into seventeen languages from South Asia and Africa: Bengali, Urdu, Marathi, Telugu, Tamil, Gujarati, Kannada, Malayalam, Punjabi, Odia, Hausa, Amharic, Yoruba, Igbo, isiZulu, Somali and isiXhosa, from ekked's pull request #13.
  • Added: Russian, Catalan, Serbian (Cyrillic and Latin), Bulgarian, Lithuanian, Portuguese (Portugal) and Afrikaans translations, from ekked's pull request #12.
  • Added: Translations into eighteen more administration languages: Hindi, Korean, Bosnian, Lower Sorbian, Estonian, Irish, Icelandic, Greenlandic, Latvian, Hungarian, Maltese, Romanian, Albanian, Slovak, Slovenian, Japanese, Greek and Finnish, from ekked's pull request #11.
  • Added: Swahili (Kenya) translation, from ekked's pull request #8.
  • Updated: The modules move to ClassicBackendJavaScriptList, so admin4 no longer loads every module on every page, from ekked's pull request #10.
  • Fixed: Translations that contradicted their language guide: wrong meanings, glossary breaches, forms of address, typos and English left in the text, from ekked's pull request #9.
  • Fixed: A module started by a plain core gets its element in jQuery once a later exp::core brought jQuery 4.
  • Fixed: expUIServerFunctions::VERSION and Exp.version say the release version, as ezinfo.php and extension.xml do (1.0.0.16 had left them at 1.0.0.15).
  • Fixed: ezinfo.php names the bundled jQuery as 4.0.0 again; the version commit of 1.0.0.16 had replaced it with the extension's version.

v1.0.0.16

Choose a tag to compare

@se7enxweb se7enxweb released this 23 Oct 22:14

Updated: the Polish (pol-PL) buttons and menu items use the infinitive ("Edytować", "Usunąć", "Zapisać i zakończyć"), as the Exponential administration does since its Polish catalogue was corrected (pol-PL GUIDE.md: buttons, menu items and action tooltips in the infinitive). Messages, headings and longer instructions are unchanged. Translation file only; no code change.

expui 1.0.0.15: runs without jQuery

Choose a tag to compare

@se7enxweb se7enxweb released this 23 Oct 08:01

Added

  • Exponential UI runs without jQuery. exp::core::shared on a page that
    requests no ezjsc::jquery brings none: the boot leaves Exp.$ unset (no
    error), and exp::core, exp::io and exp::datatable run on plain
    JavaScript with the same API. Where jQuery 4 is on the page, they run on it
    exactly as before. API.md
  • exp::core: Exp.util.extend(), param(), isPlainObject() (jQuery's
    rules; jQuery's own functions when it is there) and Exp.util.request(), a
    request as jQuery.ajax() sends it, on fetch. Without jQuery
    Exp.config.jquery is null, Exp.ready() hands over undefined, and
    Exp.register() modules get the element itself.
  • exp::io without jQuery: the same requests through fetch (address,
    method, fields, form token, Accept and X-Requested-With, cookies for the
    same origin, timeouts, aborting) and the same answers and Exp.io.Error
    kinds; Exp.io.raw() then returns a Promise with abort().
  • exp::datatable is written on the DOM: Exp.datatable.create(el, options)
    sets up a table without jQuery (callbacks get elements: render(row, td)),
    Exp.datatable.get(el) finds one, the parts are there as elements
    (table.body, table.pagers …) and table.rowData(tr) gives a row. The
    events on the element are also CustomEvents (the data in
    event.detail). $.fn.expDataTable stays, registered on Exp.$ (and with
    Exp.datatable.install(jQuery) on a jQuery loaded later): the same markup,
    callbacks with jQuery objects, the jQuery properties ($table, $body …),
    $.data(tr, 'expRow'), listeners bound through jQuery so .trigger()
    reaches them. modules/datatable.md
  • expui/test: ExpTest.bare(), a frame without jQuery, and 7 tests of the
    plain JavaScript path. TESTING.md
  • exp::collapse, exp::sticky, exp::dialog, exp::upload,
    exp::datepicker and exp::autosave run without jQuery as well, with the
    same markup, classes, ARIA, keyboard, focus, animations and requests. Where
    jQuery 4 is on the page they run on it exactly as before: listeners bound
    through it (.trigger() reaches them), its .animate(), .html() and
    $.ajax(), the parts in jQuery, the plugins. New entry points that take
    elements: Exp.upload.create(), Exp.datepicker.create() and, to find an
    instance, Exp.collapse.get(), Exp.sticky.get(), Exp.dialog.get(),
    Exp.upload.get(), Exp.datepicker.get(); Exp.sticky.start(),
    Exp.collapse(), Exp.dialog.* and Exp.autosave.* take elements as
    before. The parts are there as elements (dialog.body, upload.listElement,
    a file's row, preview.placeElement …), in jQuery too while the page has
    it ($body, $list, $row, preview.place …). The events on the dialog
    and the upload element are also CustomEvents (each listener hears one
    once); without jQuery the date picker's fields get a native change event
    and the events hand over elements. Exp.<module>.install(jQuery) puts the
    plugins on a jQuery loaded later. API.md
  • exp::core: Exp.util.css(), Exp.util.animate() and Exp.util.stop(),
    jQuery's .css(), .animate() ('show'/'hide' for the fades) and
    .stop() by its rules and timing, for the modules without jQuery.
  • expui/test: 11 tests of the plain JavaScript path of these modules, and
    ExpTest.bare() loads them (136 tests). TESTING.md

Changed

  • exp::compat, the one module that needs jQuery, says so in the browser
    console when the page has none, instead of setting nothing up silently.
  • dialog.body is the body element; it was the same jQuery object as
    dialog.$body, which stays.
  • A module file loaded twice keeps its first copy (and its open dialogs,
    uploads and toolbars) instead of setting up a second one.
  • When the boot finds a jQuery that is not a 4.x, the core now runs without
    jQuery instead of not at all (the console still says which jQuery it found).

Fixed

  • exp::datatable: while the CustomEvent of a table event is dispatched,
    only the table's own jQuery listeners are told it was triggered already, so
    each listener hears each event once and other jQuery handlers on the page
    are not held back. modules/datatable.md
  • expui/test: the Exp.io test without jQuery compares what reaches the
    server (the expui/test/echo answer) with what jQuery sends, instead of
    only what the client built.

expui 1.0.0.14: six more languages, right to left pager

Choose a tag to compare

@se7enxweb se7enxweb released this 21 Oct 03:43

Added

  • Translations in French, Ukrainian, Arabic, Persian, Pashto and Kurdish (Kurmanji) (pull requests #1, #2 and
    #5). Pull request #4 (the ten languages of 1.0.0.13) is merged too; their released wording is kept.

Fixed

  • exp::datatable: right to left (Arabic, Hebrew, Persian) the full pager puts first and previous at the right
    and next and last at the left, as the top pager and admin4's mirrored arrows already did (pull request #3).
    The groups float to inline-start and inline-end, so a left to right table inside a right to left page keeps
    its order; browsers without those values use the [dir="rtl"] rules. A browser test covers all three cases.
    modules/datatable.md

expui 1.0.0.13: translations in ten more languages

Choose a tag to compare

@se7enxweb se7enxweb released this 20 Oct 05:33

Added: translations in Croatian, Czech, Danish, Dutch, Italian, Norwegian, Polish, Brazilian Portuguese, Swedish and Turkish; version bump

expui 1.0.0.12: scrollToStart on pages with a fixed header

Choose a tag to compare

@se7enxweb se7enxweb released this 18 Oct 08:55

Updated

  • exp::sticky: scrollToStart focuses the form's first text field without scrolling again (focus({ preventScroll: true })). On a page with scroll-padding-top, such as admin4's and admin4l's fixed header, the focus scrolled the field to the middle of the window and undid the scroll to the start; the expui/test case "scrolls to the start and focuses the first text field" failed there.

expui 1.0.0.11: tests N/A under an enforced Content Security Policy

Choose a tag to compare

@se7enxweb se7enxweb released this 18 Oct 07:43

Updated

  • expui/test under an enforced Content Security Policy without 'unsafe-inline': the three tests that need inline scripts (a dialog with scripts: true, the classic onclick calendar icon by click and by keyboard) report "N/A under enforced CSP" with the reason instead of failing, and still run where the policy allows inline scripts. The runner has t.skip(reason), t.needsInlineScripts(what) and ExpTest.inlineScripts(); ExpTestResults counts skipped. The dialog script test is split, so "not run by default" runs under every policy.
  • Exp.version and expUIServerFunctions::VERSION agree with ezinfo.php and extension.xml again (1.0.0.9 and 1.0.0.10 still said 1.0.0.8).

expui 1.0.0.10: the test page without an inline script

Choose a tag to compare

@se7enxweb se7enxweb released this 17 Oct 22:31
  • Updated: expui/test starts the tests from exp/test/start.js instead of an inline script, so the test page runs under a Content Security Policy without unsafe-inline. The testing documentation shows the same.