gina 0.3.9 → 0.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/scripts/scan-vendored-cves.js +1 -1
- package/.github/workflows/bundle-freshness.yml +3 -3
- package/.github/workflows/security.yml +52 -0
- package/.github/workflows/vendored-cve.yml +2 -2
- package/CHANGELOG.md +12 -4
- package/README.md +5 -8
- package/ROADMAP.md +1 -0
- package/framework/v0.3.10/VERSION +1 -0
- package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.js +396 -295
- package/framework/v0.3.10/core/asset/plugin/dist/vendor/gina/js/gina.min.js +548 -0
- package/framework/v0.3.10/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.10/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.v4.js +1 -1
- package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.js +19 -1
- package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-nunjucks.js +8 -8
- package/framework/{v0.3.9 → v0.3.10}/core/gna.js +1 -1
- package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/session/src/main.js +2 -2
- package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/src/main.js +388 -292
- package/framework/{v0.3.9 → v0.3.10}/core/server.isaac.js +16 -0
- package/framework/{v0.3.9 → v0.3.10}/core/server.js +4 -4
- package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/migrate.js +1 -1
- package/framework/{v0.3.9 → v0.3.10}/lib/cmd/inspector/help.txt +2 -2
- package/framework/{v0.3.9 → v0.3.10}/lib/collection/src/main.js +8 -3
- package/framework/{v0.3.9 → v0.3.10}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +21 -7
- package/package.json +3 -2
- package/resources/git-hooks/pre-commit +4 -1
- package/script/_load_private_tokens.js +77 -0
- package/script/check_no_local_leak.js +49 -21
- package/script/retry_lockfile_sync.js +85 -0
- package/framework/v0.3.9/VERSION +0 -1
- package/framework/v0.3.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -545
- package/framework/v0.3.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/AUTHORS +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/html/static.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/config.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/content.encoding +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/currency.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/mime.types +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/entity.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/template/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/file/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/router.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/server.express.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/status.codes +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/_gitignore +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/env.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/console.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/context.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/path.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/prototypes.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/task.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/text.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/async/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/async/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/collection/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/collection/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/collection/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/config.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cron/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cron/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/generator/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/math/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/merge/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/merge/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/model.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/proc.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/shell.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/state.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/url/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/url/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/url/routing.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/uuid/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/validator.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/watcher/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/watcher/src/main.js +0 -0
|
@@ -4193,6 +4193,26 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
4193
4193
|
} //EO for $els
|
|
4194
4194
|
|
|
4195
4195
|
$els = null; $el = null; $elTMP = null; evt = null;
|
|
4196
|
+
|
|
4197
|
+
// [HTML5 form-reassociation support] Drain per-control listeners attached to
|
|
4198
|
+
// reassociated controls during bindForm. The element-by-tagName loops above
|
|
4199
|
+
// walk $form.target's descendant tree only, so reassociated controls (which
|
|
4200
|
+
// live outside that subtree) are invisible to them. We hold a side-table of
|
|
4201
|
+
// {el, evt, fn} triples and remove each listener directly from its element.
|
|
4202
|
+
// Direct removeEventListener (not the gina removeListener helper) avoids
|
|
4203
|
+
// touching gina.events bookkeeping that the form-level proxies still rely on.
|
|
4204
|
+
if ( Array.isArray($form.reassociatedListeners) ) {
|
|
4205
|
+
for (let i = 0, len = $form.reassociatedListeners.length; i < len; i++) {
|
|
4206
|
+
let entry = $form.reassociatedListeners[i];
|
|
4207
|
+
if (entry && entry.el && entry.el.removeEventListener) {
|
|
4208
|
+
entry.el.removeEventListener(entry.evt, entry.fn, false);
|
|
4209
|
+
} else if (entry && entry.el && entry.el.detachEvent) {
|
|
4210
|
+
entry.el.detachEvent('on' + entry.evt, entry.fn);
|
|
4211
|
+
}
|
|
4212
|
+
}
|
|
4213
|
+
$form.reassociatedListeners = [];
|
|
4214
|
+
}
|
|
4215
|
+
|
|
4196
4216
|
// reset error display
|
|
4197
4217
|
//resetErrorsDisplay($form);
|
|
4198
4218
|
// or
|
|
@@ -4324,18 +4344,54 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
4324
4344
|
if (!$form.fieldsSet)
|
|
4325
4345
|
$form.fieldsSet = {};
|
|
4326
4346
|
|
|
4347
|
+
// Side-table for per-control listeners attached on form-reassociated controls
|
|
4348
|
+
// (controls whose form="X" attribute points at $target but which live OUTSIDE
|
|
4349
|
+
// $target's DOM subtree). Drained by unbindForm.
|
|
4350
|
+
if (!Array.isArray($form.reassociatedListeners))
|
|
4351
|
+
$form.reassociatedListeners = [];
|
|
4352
|
+
|
|
4353
|
+
// Helper: collect controls owned by $form, including HTML5 form-reassociated
|
|
4354
|
+
// controls (those carrying `form="X"` outside the form's DOM subtree). Walks
|
|
4355
|
+
// $form.elements (HTMLFormControlsCollection — owner-aware) for the primary set,
|
|
4356
|
+
// then a secondary in-tree sweep filtered by `.form === $form` to catch elements
|
|
4357
|
+
// HTMLFormControlsCollection skips (type=image, nameless+idless). The `.form`
|
|
4358
|
+
// filter also excludes in-tree descendants whose `form="..."` points at a different
|
|
4359
|
+
// form (parent-form contamination guard).
|
|
4360
|
+
var getOwnedElements = function($form, tag) {
|
|
4361
|
+
var arr = []
|
|
4362
|
+
, seen = {}
|
|
4363
|
+
, tagUpper = tag.toUpperCase()
|
|
4364
|
+
;
|
|
4365
|
+
for (let i = 0, len = $form.elements.length; i < len; i++) {
|
|
4366
|
+
let $el = $form.elements[i];
|
|
4367
|
+
if ($el.tagName === tagUpper) {
|
|
4368
|
+
arr.push($el);
|
|
4369
|
+
if ($el.id) seen[$el.id] = true;
|
|
4370
|
+
}
|
|
4371
|
+
}
|
|
4372
|
+
var inTree = $form.getElementsByTagName(tag);
|
|
4373
|
+
for (let i = 0, len = inTree.length; i < len; i++) {
|
|
4374
|
+
let $el = inTree[i];
|
|
4375
|
+
if ($el.form === $form && (!$el.id || !seen[$el.id])) {
|
|
4376
|
+
arr.push($el);
|
|
4377
|
+
}
|
|
4378
|
+
}
|
|
4379
|
+
return arr;
|
|
4380
|
+
};
|
|
4381
|
+
|
|
4327
4382
|
// binding form elements
|
|
4328
4383
|
var type = null
|
|
4329
4384
|
, id = null
|
|
4330
4385
|
|
|
4331
|
-
// a|links
|
|
4386
|
+
// a|links — DOM-tree only (anchor elements don't carry the HTMLFormControlsCollection
|
|
4387
|
+
// owner relationship; reassociated <a data-gina-form-submit> is not a documented pattern)
|
|
4332
4388
|
, $a = $target.getElementsByTagName('a')
|
|
4333
4389
|
// input type: checkbox, radio, hidden, text, files, number, date ...
|
|
4334
|
-
, $inputs = $target
|
|
4390
|
+
, $inputs = getOwnedElements($target, 'input')
|
|
4335
4391
|
// textarea
|
|
4336
|
-
, $textareas = $target
|
|
4392
|
+
, $textareas = getOwnedElements($target, 'textarea')
|
|
4337
4393
|
// select
|
|
4338
|
-
, $select = $target
|
|
4394
|
+
, $select = getOwnedElements($target, 'select')
|
|
4339
4395
|
, allFormGroupedElements = {}
|
|
4340
4396
|
, allFormGroupNames = []
|
|
4341
4397
|
, formElementGroup = {}
|
|
@@ -4431,9 +4487,15 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
4431
4487
|
|
|
4432
4488
|
if ( /^(checkbox|radio)$/i.test($inputs[f].type) && typeof($form.fieldsSet[elId].defaultChecked) == 'undefined' ) {
|
|
4433
4489
|
|
|
4434
|
-
|
|
4490
|
+
// Read the IDL `defaultChecked` (which mirrors the HTML `checked`
|
|
4491
|
+
// attribute) instead of the live `.checked`. For form-reassociated
|
|
4492
|
+
// radios hit by Chromium's parse-time IDL/attribute desync — sister
|
|
4493
|
+
// bug to the updateRadio reconciliation at commit 80dd89f9 — `.checked`
|
|
4494
|
+
// reads FALSE at bind time despite the attribute being present, so
|
|
4495
|
+
// caching from `.checked` would hold the wrong default and a subsequent
|
|
4496
|
+
// form-reset would clear the originally-checked option.
|
|
4435
4497
|
$form.fieldsSet[elId].defaultChecked = (
|
|
4436
|
-
|
|
4498
|
+
$inputs[f].defaultChecked
|
|
4437
4499
|
||
|
|
4438
4500
|
/^(true|on)$/.test(defaultValue)
|
|
4439
4501
|
&& /^(checkbox)$/i.test($inputs[f].type)
|
|
@@ -5321,9 +5383,32 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
5321
5383
|
isInit = ( typeof(isInit) == 'undefined' || !isInit ) ? false : true;
|
|
5322
5384
|
isTriggedByUser = ( typeof(isTriggedByUser) == 'undefined' || !isTriggedByUser ) ? false : true;
|
|
5323
5385
|
|
|
5386
|
+
// [HTML5 form-reassociation] Reconcile the IDL `.checked` property with the
|
|
5387
|
+
// `checked` HTML attribute on init when they disagree. Background: when
|
|
5388
|
+
// multiple form-reassociated radios share a `name` AND are DOM descendants of
|
|
5389
|
+
// a common ancestor `<form>`, Chromium-based browsers uncheck the earlier ones
|
|
5390
|
+
// at parse time even though each radio belongs to a distinct form-owner per
|
|
5391
|
+
// the HTML5 spec — leaving `.checked = false` while the `checked` HTML
|
|
5392
|
+
// attribute is still present. Aligning the IDL state with the attribute
|
|
5393
|
+
// matches the author's intent and is a no-op for the normal (non-reassociated)
|
|
5394
|
+
// shape where the two already agree.
|
|
5395
|
+
if ( isInit && !$el.checked && $el.hasAttribute('checked') ) {
|
|
5396
|
+
$el.checked = true;
|
|
5397
|
+
}
|
|
5398
|
+
|
|
5324
5399
|
var checked = $el.checked, evt = null;
|
|
5325
5400
|
var isBoolean = /^(true|false)$/i.test($el.value);
|
|
5326
|
-
|
|
5401
|
+
|
|
5402
|
+
// [HTML5 form-reassociation] Scope the mutual-exclusion peer set by form-owner
|
|
5403
|
+
// per HTML5 spec ("the radio button group that contains a radio button a also
|
|
5404
|
+
// contains all the other input elements b that fulfill ... b's form owner is
|
|
5405
|
+
// a's form owner"). `getElementsByName` returns same-name radios across the
|
|
5406
|
+
// whole document regardless of owner — without this filter, unchecking peers
|
|
5407
|
+
// cross-fires into other forms whose radios happen to share the name.
|
|
5408
|
+
var rawRadioGroup = document.getElementsByName($el.name);
|
|
5409
|
+
radioGroup = Array.prototype.filter.call(rawRadioGroup, function(_r) {
|
|
5410
|
+
return _r.form === $el.form;
|
|
5411
|
+
});
|
|
5327
5412
|
|
|
5328
5413
|
// loop if radio group
|
|
5329
5414
|
for (let r = 0, rLen = radioGroup.length; r < rLen; ++r) {
|
|
@@ -5459,338 +5544,347 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
5459
5544
|
|
|
5460
5545
|
evt = 'click';
|
|
5461
5546
|
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5547
|
+
// [HTML5 form-reassociation support] Form-level proxy handler bodies extracted as
|
|
5548
|
+
// named expressions so the same handlers can be attached on $target (form-level —
|
|
5549
|
+
// captures bubbled events from in-tree controls) AND on each reassociated control
|
|
5550
|
+
// (per-control — events on reassociated controls bubble through THEIR ancestors,
|
|
5551
|
+
// not through $target, so the form-level listener never fires for them). Handler
|
|
5552
|
+
// bodies read event.target.id and dispatch via gina.events; they don't depend on
|
|
5553
|
+
// event.currentTarget being the form (the few places that reference currentTarget
|
|
5554
|
+
// are guarded fallbacks that no-op on a control).
|
|
5555
|
+
var resetProxyHandler = function(event) {
|
|
5556
|
+
var $el = event.target;
|
|
5557
|
+
if (
|
|
5558
|
+
typeof(event.defaultPrevented) != 'undefined'
|
|
5559
|
+
&& event.defaultPrevented
|
|
5560
|
+
) {
|
|
5561
|
+
return false;
|
|
5562
|
+
}
|
|
5563
|
+
event.preventDefault();
|
|
5564
|
+
var _evt = $el.id;
|
|
5565
|
+
if (!_evt) return false;
|
|
5566
|
+
if ( !/^reset\./.test(_evt) ) {
|
|
5567
|
+
_evt = 'reset.'+$el.id
|
|
5568
|
+
}
|
|
5569
|
+
if (gina.events[_evt]) {
|
|
5570
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
5571
|
+
}
|
|
5572
|
+
};
|
|
5573
|
+
var keydownProxyHandler = function(event) {
|
|
5574
|
+
var $el = event.target;
|
|
5575
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5576
|
+
return false;
|
|
5469
5577
|
|
|
5470
|
-
|
|
5471
|
-
var $form = instance.$forms[_id];
|
|
5472
|
-
$form.target.dataset.ginaFormIsResetting = true;
|
|
5473
|
-
resetFields($form);
|
|
5474
|
-
// forcing it
|
|
5475
|
-
var validationInfo = getFormValidationInfos($form.target, $form.rules, true);
|
|
5476
|
-
var fields = validationInfo.fields;
|
|
5477
|
-
var $fields = validationInfo.$fields;
|
|
5578
|
+
keyboardMapping[event.keyCode] = event.type == 'keydown';
|
|
5478
5579
|
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
console.debug('silent reset validation result[isValid:'+isFormValid+']: ', result);
|
|
5482
|
-
//resetting error display
|
|
5483
|
-
handleErrorsDisplay($form.target, {});
|
|
5580
|
+
var _evt = $el.id;
|
|
5581
|
+
if (!_evt) return false;
|
|
5484
5582
|
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
});
|
|
5488
|
-
})
|
|
5583
|
+
if ( !/^keydown\./.test(_evt) ) {
|
|
5584
|
+
_evt = 'keydown.'+$el.id
|
|
5489
5585
|
}
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
}
|
|
5500
|
-
// Fixed on 2021/06/08 - because of radio reset
|
|
5501
|
-
event.preventDefault();
|
|
5502
|
-
|
|
5503
|
-
var _evt = $el.id;
|
|
5504
|
-
if (!_evt) return false;
|
|
5586
|
+
if (gina.events[_evt]) {
|
|
5587
|
+
cancelEvent(event);
|
|
5588
|
+
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
5589
|
+
}
|
|
5590
|
+
};
|
|
5591
|
+
var keyupProxyHandler = function(event) {
|
|
5592
|
+
var $el = event.target;
|
|
5593
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5594
|
+
return false;
|
|
5505
5595
|
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
if (gina.events[_evt]) {
|
|
5510
|
-
triggerEvent(gina, $el, _evt, event.detail);
|
|
5511
|
-
}
|
|
5512
|
-
});
|
|
5513
|
-
// keydown proxy
|
|
5514
|
-
addListener(gina, $target, 'keydown', function(event) {
|
|
5515
|
-
var $el = event.target;
|
|
5516
|
-
// prevent event to be triggered twice
|
|
5517
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5518
|
-
return false;
|
|
5596
|
+
if (keyboardMapping[event.keyCode]) {
|
|
5597
|
+
delete keyboardMapping[event.keyCode]
|
|
5598
|
+
}
|
|
5519
5599
|
|
|
5520
|
-
|
|
5600
|
+
var _evt = $el.id;
|
|
5601
|
+
if (!_evt) return false;
|
|
5602
|
+
if ( !/^keyup\./.test(_evt) ) {
|
|
5603
|
+
_evt = 'keyup.'+$el.id
|
|
5604
|
+
}
|
|
5605
|
+
if (gina.events[_evt]) {
|
|
5606
|
+
cancelEvent(event);
|
|
5607
|
+
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
5608
|
+
}
|
|
5609
|
+
};
|
|
5610
|
+
var focusinProxyHandler = function(event) {
|
|
5611
|
+
var $el = event.target;
|
|
5612
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5613
|
+
return false;
|
|
5521
5614
|
|
|
5522
|
-
|
|
5523
|
-
|
|
5615
|
+
var _evt = $el.id;
|
|
5616
|
+
if (!_evt) return false;
|
|
5524
5617
|
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
|
|
5529
|
-
|
|
5530
|
-
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
5531
|
-
}
|
|
5532
|
-
});
|
|
5533
|
-
// keyup proxy - updating keyboardMapping
|
|
5534
|
-
addListener(gina, $target, 'keyup', function(event) {
|
|
5535
|
-
var $el = event.target;
|
|
5536
|
-
// prevent event to be triggered twice
|
|
5537
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5538
|
-
return false;
|
|
5618
|
+
if ( !/^focusin\./.test(_evt) ) {
|
|
5619
|
+
_evt = 'focusin.'+$el.id
|
|
5620
|
+
}
|
|
5621
|
+
if (gina.events[_evt]) {
|
|
5622
|
+
cancelEvent(event);
|
|
5539
5623
|
|
|
5540
|
-
|
|
5541
|
-
|
|
5624
|
+
// event.target.form works for both in-tree and reassociated controls
|
|
5625
|
+
// (form-association is owner-relationship-aware); event.currentTarget
|
|
5626
|
+
// is the form when attached form-level, the control when per-control.
|
|
5627
|
+
var formId = event.target.form.getAttribute('id') || ((event.currentTarget && event.currentTarget.getAttribute) ? event.currentTarget.getAttribute('id') : null);
|
|
5628
|
+
var lastFocused = {
|
|
5629
|
+
id : $el.id,
|
|
5630
|
+
name: $el.name
|
|
5631
|
+
};
|
|
5632
|
+
if (!instance.$forms[formId].lastFocused.length) {
|
|
5633
|
+
instance.$forms[formId].lastFocused[0] = lastFocused;
|
|
5634
|
+
} else {
|
|
5635
|
+
instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
|
|
5542
5636
|
}
|
|
5637
|
+
lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
|
|
5543
5638
|
|
|
5544
|
-
|
|
5545
|
-
if (!_evt) return false;
|
|
5546
|
-
if ( !/^keyup\./.test(_evt) ) {
|
|
5547
|
-
_evt = 'keyup.'+$el.id
|
|
5548
|
-
}
|
|
5549
|
-
if (gina.events[_evt]) {
|
|
5550
|
-
cancelEvent(event);
|
|
5551
|
-
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
5552
|
-
}
|
|
5553
|
-
});
|
|
5639
|
+
instance.$forms[formId].lastFocused.splice(2);
|
|
5554
5640
|
|
|
5555
|
-
|
|
5556
|
-
|
|
5557
|
-
|
|
5558
|
-
|
|
5559
|
-
|
|
5641
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
5642
|
+
}
|
|
5643
|
+
};
|
|
5644
|
+
var focusoutProxyHandler = function(event) {
|
|
5645
|
+
var $el = event.target;
|
|
5646
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5560
5647
|
return false;
|
|
5561
5648
|
|
|
5562
|
-
|
|
5563
|
-
|
|
5564
|
-
|
|
5565
|
-
if ( !/^focusin\./.test(_evt) ) {
|
|
5566
|
-
_evt = 'focusin.'+$el.id
|
|
5567
|
-
}
|
|
5568
|
-
if (gina.events[_evt]) {
|
|
5569
|
-
cancelEvent(event);
|
|
5570
|
-
|
|
5571
|
-
// Fixed on 2025-03-05 - "last focus" vs "current focus"
|
|
5572
|
-
// To get active element: document.activeElement
|
|
5573
|
-
var formId = event.target.form.getAttribute('id') || event.currentTarget.getAttribute('id');
|
|
5574
|
-
var lastFocused = {
|
|
5575
|
-
id : $el.id,
|
|
5576
|
-
name: $el.name
|
|
5577
|
-
};
|
|
5578
|
-
if (!instance.$forms[formId].lastFocused.length) {
|
|
5579
|
-
instance.$forms[formId].lastFocused[0] = lastFocused;
|
|
5580
|
-
} else {
|
|
5581
|
-
instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
|
|
5582
|
-
}
|
|
5583
|
-
lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
|
|
5584
|
-
|
|
5585
|
-
// cleanup
|
|
5586
|
-
instance.$forms[formId].lastFocused.splice(2);
|
|
5649
|
+
var _evt = $el.id;
|
|
5650
|
+
if (!_evt) return false;
|
|
5587
5651
|
|
|
5588
|
-
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
|
|
5593
|
-
// focusout proxy
|
|
5594
|
-
addListener(gina, $target, 'focusout', function(event) {
|
|
5595
|
-
// Never preventDefault from a proxy listner
|
|
5596
|
-
var $el = event.target;
|
|
5597
|
-
// prevent event to be triggered twice
|
|
5598
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5599
|
-
return false;
|
|
5652
|
+
if ( !/^focusout\./.test(_evt) ) {
|
|
5653
|
+
_evt = 'focusout.'+$el.id
|
|
5654
|
+
}
|
|
5655
|
+
if (gina.events[_evt]) {
|
|
5656
|
+
cancelEvent(event);
|
|
5600
5657
|
|
|
5601
|
-
|
|
5602
|
-
|
|
5658
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
5659
|
+
}
|
|
5660
|
+
};
|
|
5661
|
+
var changeProxyHandler = function(event) {
|
|
5662
|
+
var $el = event.target;
|
|
5663
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5664
|
+
return false;
|
|
5603
5665
|
|
|
5604
|
-
|
|
5605
|
-
|
|
5606
|
-
}
|
|
5607
|
-
if (gina.events[_evt]) {
|
|
5608
|
-
cancelEvent(event);
|
|
5666
|
+
var _evt = $el.id;
|
|
5667
|
+
if (!_evt) return false;
|
|
5609
5668
|
|
|
5610
|
-
|
|
5611
|
-
|
|
5612
|
-
}
|
|
5669
|
+
if ( !/^change\./.test(_evt) ) {
|
|
5670
|
+
_evt = 'change.'+$el.id
|
|
5671
|
+
}
|
|
5672
|
+
if (gina.events[_evt]) {
|
|
5673
|
+
cancelEvent(event);
|
|
5674
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
5675
|
+
}
|
|
5676
|
+
};
|
|
5677
|
+
var clickProxyHandler = function(event) {
|
|
5678
|
+
var $el = event.target;
|
|
5613
5679
|
|
|
5614
|
-
|
|
5615
|
-
addListener(gina, $target, 'change', function(event) {
|
|
5616
|
-
// Never preventDefault from a proxy listner
|
|
5617
|
-
var $el = event.target;
|
|
5618
|
-
// prevent event to be triggered twice
|
|
5619
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5620
|
-
return false;
|
|
5680
|
+
var isCustomSubmit = false, isCaseIgnored = false;
|
|
5621
5681
|
|
|
5622
|
-
|
|
5623
|
-
|
|
5682
|
+
if (
|
|
5683
|
+
/(label)/i.test(event.target.tagName)
|
|
5684
|
+
&& typeof(event.target.control) != 'undefined'
|
|
5685
|
+
&& event.target.control != null
|
|
5686
|
+
&& /(checkbox|radio)/i.test(event.target.control.type)
|
|
5687
|
+
||
|
|
5688
|
+
/(label)/i.test(event.target.parentNode.tagName)
|
|
5689
|
+
&& typeof(event.target.parentNode.control) != 'undefined'
|
|
5690
|
+
&& event.target.parentNode.control != null
|
|
5691
|
+
&& /(checkbox|radio)/i.test(event.target.parentNode.control.type)
|
|
5692
|
+
) {
|
|
5693
|
+
var isCaseIgnored = (
|
|
5694
|
+
event.target.getAttribute('for')
|
|
5695
|
+
||
|
|
5696
|
+
event.target.parentNode.getAttribute('for')
|
|
5697
|
+
) ? true : false
|
|
5698
|
+
;
|
|
5699
|
+
$el = event.target.control || event.target.parentNode.control;
|
|
5624
5700
|
|
|
5625
|
-
|
|
5626
|
-
|
|
5627
|
-
|
|
5628
|
-
|
|
5629
|
-
|
|
5630
|
-
|
|
5701
|
+
}
|
|
5702
|
+
if (
|
|
5703
|
+
!$el.disabled
|
|
5704
|
+
&& /(checkbox|radio)/i.test($el.type)
|
|
5705
|
+
&& !isCaseIgnored
|
|
5706
|
+
) {
|
|
5707
|
+
if ( /checkbox/i.test($el.type) ) {
|
|
5708
|
+
return updateCheckBox($el);
|
|
5709
|
+
} else if ( /radio/i.test($el.type) ) {
|
|
5710
|
+
return updateRadio($el, false, true);
|
|
5631
5711
|
}
|
|
5632
|
-
}
|
|
5633
|
-
// click proxy
|
|
5634
|
-
addListener(gina, $target, 'click', function(event) {
|
|
5635
|
-
// Never preventDefault from a proxy listner
|
|
5636
|
-
var $el = event.target;
|
|
5637
|
-
// prevent event to be triggered twice
|
|
5638
|
-
// if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5639
|
-
// return false;
|
|
5712
|
+
}
|
|
5640
5713
|
|
|
5641
|
-
var isCustomSubmit = false, isCaseIgnored = false;
|
|
5642
5714
|
|
|
5715
|
+
if (
|
|
5716
|
+
/(button|input)/i.test($el.tagName) && /(submit|checkbox|radio)/i.test($el.type)
|
|
5717
|
+
|| /a/i.test($el.tagName) && $el.attributes.getNamedItem('data-gina-form-submit')
|
|
5718
|
+
|| /a/i.test($el.parentNode.tagName) && $el.parentNode.attributes.getNamedItem('data-gina-form-submit')
|
|
5719
|
+
) {
|
|
5720
|
+
var namedItem = $el.attributes.getNamedItem('data-gina-form-submit');
|
|
5721
|
+
var parentNamedItem = $el.parentNode.attributes.getNamedItem('data-gina-form-submit');
|
|
5643
5722
|
if (
|
|
5644
|
-
|
|
5645
|
-
&& typeof(event.target.control) != 'undefined'
|
|
5646
|
-
&& event.target.control != null
|
|
5647
|
-
&& /(checkbox|radio)/i.test(event.target.control.type)
|
|
5723
|
+
namedItem
|
|
5648
5724
|
||
|
|
5649
|
-
|
|
5650
|
-
&& typeof(event.target.parentNode.control) != 'undefined'
|
|
5651
|
-
&& event.target.parentNode.control != null
|
|
5652
|
-
&& /(checkbox|radio)/i.test(event.target.parentNode.control.type)
|
|
5725
|
+
parentNamedItem
|
|
5653
5726
|
) {
|
|
5654
|
-
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
;
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
if (
|
|
5666
|
-
!$el.disabled
|
|
5667
|
-
&& /(checkbox|radio)/i.test($el.type)
|
|
5668
|
-
&& !isCaseIgnored
|
|
5669
|
-
) {
|
|
5670
|
-
// apply checked choice : if true -> set to false, and if false -> set to true
|
|
5671
|
-
if ( /checkbox/i.test($el.type) ) {
|
|
5672
|
-
return updateCheckBox($el);
|
|
5673
|
-
} else if ( /radio/i.test($el.type) ) {
|
|
5674
|
-
return updateRadio($el, false, true);
|
|
5727
|
+
isCustomSubmit = true;
|
|
5728
|
+
// For form-level (event.currentTarget == form), reads the form's
|
|
5729
|
+
// method attribute. For per-control on a reassociated submit, the
|
|
5730
|
+
// currentTarget fallback yields null and the if(newFormMethod) below
|
|
5731
|
+
// skips the override block — typical reassociated submits don't need it.
|
|
5732
|
+
var newFormMethod = null;
|
|
5733
|
+
var $methodSrc = (event.currentTarget && event.currentTarget.getAttribute) ? event.currentTarget : ($el.form || null);
|
|
5734
|
+
if (namedItem) {
|
|
5735
|
+
newFormMethod = $el.getAttribute('data-gina-form-submit-method') || ($methodSrc ? $methodSrc.getAttribute('method') : null);
|
|
5736
|
+
} else {
|
|
5737
|
+
newFormMethod = $el.parentNode.getAttribute('data-gina-form-submit-method') || ($methodSrc ? $methodSrc.getAttribute('method') : null);
|
|
5675
5738
|
}
|
|
5676
|
-
|
|
5677
|
-
|
|
5678
|
-
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
if (
|
|
5689
|
-
namedItem
|
|
5690
|
-
||
|
|
5691
|
-
parentNamedItem
|
|
5692
|
-
) {
|
|
5693
|
-
isCustomSubmit = true;
|
|
5694
|
-
// Get others attribute and override current form attribute
|
|
5695
|
-
var newFormMethod = null;
|
|
5696
|
-
if (namedItem) {
|
|
5697
|
-
newFormMethod = $el.getAttribute('data-gina-form-submit-method') || event.currentTarget.getAttribute('method');
|
|
5698
|
-
} else {
|
|
5699
|
-
newFormMethod = $el.parentNode.getAttribute('data-gina-form-submit-method') || event.currentTarget.getAttribute('method');
|
|
5700
|
-
}
|
|
5701
|
-
if (newFormMethod) {
|
|
5702
|
-
// Backup originalMethod
|
|
5703
|
-
|
|
5704
|
-
// Rewrite current method
|
|
5705
|
-
if (namedItem && $el.form) {
|
|
5706
|
-
if ($el.form.setAttribute) {
|
|
5707
|
-
$el.form.setAttribute('method', newFormMethod);
|
|
5708
|
-
} else {
|
|
5709
|
-
event.currentTarget.setAttribute('method', newFormMethod);
|
|
5710
|
-
}
|
|
5711
|
-
} else if ($el.parentNode.form) {
|
|
5712
|
-
if ($el.parentNode.form.setAttribute) {
|
|
5713
|
-
$el.parentNode.form.setAttribute('method', newFormMethod);
|
|
5714
|
-
} else {
|
|
5715
|
-
event.currentTarget.setAttribute('method', newFormMethod);
|
|
5716
|
-
}
|
|
5739
|
+
if (newFormMethod) {
|
|
5740
|
+
if (namedItem && $el.form) {
|
|
5741
|
+
if ($el.form.setAttribute) {
|
|
5742
|
+
$el.form.setAttribute('method', newFormMethod);
|
|
5743
|
+
} else if (event.currentTarget && event.currentTarget.setAttribute) {
|
|
5744
|
+
event.currentTarget.setAttribute('method', newFormMethod);
|
|
5745
|
+
}
|
|
5746
|
+
} else if ($el.parentNode.form) {
|
|
5747
|
+
if ($el.parentNode.form.setAttribute) {
|
|
5748
|
+
$el.parentNode.form.setAttribute('method', newFormMethod);
|
|
5749
|
+
} else if (event.currentTarget && event.currentTarget.setAttribute) {
|
|
5750
|
+
event.currentTarget.setAttribute('method', newFormMethod);
|
|
5717
5751
|
}
|
|
5718
5752
|
}
|
|
5719
5753
|
}
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5754
|
+
}
|
|
5755
|
+
if ( typeof($el.id) == 'undefined' || !$el.getAttribute('id') ) {
|
|
5756
|
+
$el.setAttribute('id', 'click.' + uuid() );
|
|
5757
|
+
$el.id = $el.getAttribute('id')
|
|
5758
|
+
} else {
|
|
5759
|
+
$el.id = $el.getAttribute('id')
|
|
5760
|
+
}
|
|
5727
5761
|
|
|
5728
5762
|
|
|
5729
|
-
|
|
5763
|
+
if (/^click\./.test($el.id) || withRules) {
|
|
5730
5764
|
|
|
5731
|
-
|
|
5765
|
+
var _evt = $el.id;
|
|
5732
5766
|
|
|
5733
|
-
|
|
5767
|
+
if (!_evt) return false;
|
|
5734
5768
|
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5769
|
+
if ( !/^click\./.test(_evt) ) {
|
|
5770
|
+
_evt = $el.id
|
|
5771
|
+
}
|
|
5738
5772
|
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
) {
|
|
5744
|
-
|
|
5745
|
-
|
|
5746
|
-
|
|
5747
|
-
return updateCheckBox($el);
|
|
5748
|
-
} else if ( /radio/i.test($el.type) ) {
|
|
5749
|
-
return updateRadio($el, false, true);
|
|
5750
|
-
}
|
|
5773
|
+
if (
|
|
5774
|
+
!$el.disabled
|
|
5775
|
+
&& /(checkbox|radio)/i.test($el.type)
|
|
5776
|
+
) {
|
|
5777
|
+
if ( /checkbox/i.test($el.type) ) {
|
|
5778
|
+
return updateCheckBox($el);
|
|
5779
|
+
} else if ( /radio/i.test($el.type) ) {
|
|
5780
|
+
return updateRadio($el, false, true);
|
|
5751
5781
|
}
|
|
5782
|
+
}
|
|
5752
5783
|
|
|
5753
|
-
|
|
5754
|
-
|
|
5755
|
-
return false;
|
|
5784
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
5785
|
+
return false;
|
|
5756
5786
|
|
|
5757
|
-
|
|
5758
|
-
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5765
|
-
|
|
5766
|
-
|
|
5767
|
-
|
|
5768
|
-
if ( $el.type == 'reset' && !/^reset\./i.test(_evt) ) {
|
|
5769
|
-
_evt = 'reset.'+_evt
|
|
5770
|
-
}
|
|
5771
|
-
|
|
5772
|
-
if (gina.events[_evt]) {
|
|
5773
|
-
cancelEvent(event);
|
|
5787
|
+
if (
|
|
5788
|
+
$el.type == 'submit' && !/^submit\./i.test(_evt)
|
|
5789
|
+
||
|
|
5790
|
+
isCustomSubmit && !/^submit\./i.test(_evt)
|
|
5791
|
+
) {
|
|
5792
|
+
_evt = 'submit.'+_evt;
|
|
5793
|
+
instance.$forms[$form.id].submitTrigger = $form.submitTrigger = $el.id;
|
|
5794
|
+
}
|
|
5795
|
+
if ( $el.type == 'reset' && !/^reset\./i.test(_evt) ) {
|
|
5796
|
+
_evt = 'reset.'+_evt
|
|
5797
|
+
}
|
|
5774
5798
|
|
|
5775
|
-
|
|
5776
|
-
|
|
5777
|
-
isCustomSubmit
|
|
5778
|
-
&& typeof(this.id) != 'undefined'
|
|
5779
|
-
&& this.id != ''
|
|
5780
|
-
&& typeof(gina.validator.$forms[this.id]) != 'undefined'
|
|
5781
|
-
) {
|
|
5782
|
-
gina.validator.getFormById(this.id).submit();
|
|
5783
|
-
cancelEvent(event); // stop #navigation
|
|
5784
|
-
}
|
|
5799
|
+
if (gina.events[_evt]) {
|
|
5800
|
+
cancelEvent(event);
|
|
5785
5801
|
|
|
5802
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
5803
|
+
} else if (
|
|
5804
|
+
isCustomSubmit
|
|
5805
|
+
&& typeof(this.id) != 'undefined'
|
|
5806
|
+
&& this.id != ''
|
|
5807
|
+
&& typeof(gina.validator.$forms[this.id]) != 'undefined'
|
|
5808
|
+
) {
|
|
5809
|
+
gina.validator.getFormById(this.id).submit();
|
|
5810
|
+
cancelEvent(event);
|
|
5786
5811
|
}
|
|
5812
|
+
|
|
5787
5813
|
}
|
|
5814
|
+
}
|
|
5815
|
+
};
|
|
5788
5816
|
|
|
5789
|
-
|
|
5817
|
+
proceed = function () {
|
|
5818
|
+
var subEvent = null;
|
|
5819
|
+
// handle form reset
|
|
5820
|
+
subEvent = 'reset.'+$target.id;
|
|
5821
|
+
if ( typeof(gina.events[subEvent]) == 'undefined' ) {
|
|
5822
|
+
addListener(gina, $target, subEvent, function(e) {
|
|
5823
|
+
e.preventDefault();
|
|
5824
|
+
|
|
5825
|
+
var _id = e.currentTarget.id || e.target.id
|
|
5826
|
+
var $form = instance.$forms[_id];
|
|
5827
|
+
$form.target.dataset.ginaFormIsResetting = true;
|
|
5828
|
+
resetFields($form);
|
|
5829
|
+
// forcing it
|
|
5830
|
+
var validationInfo = getFormValidationInfos($form.target, $form.rules, true);
|
|
5831
|
+
var fields = validationInfo.fields;
|
|
5832
|
+
var $fields = validationInfo.$fields;
|
|
5833
|
+
|
|
5834
|
+
validate($form.target, fields, $fields, $form.rules, function onSilentResetValidation(result){
|
|
5835
|
+
var isFormValid = result.isValid();
|
|
5836
|
+
console.debug('silent reset validation result[isValid:'+isFormValid+']: ', result);
|
|
5837
|
+
//resetting error display
|
|
5838
|
+
handleErrorsDisplay($form.target, {});
|
|
5839
|
+
|
|
5840
|
+
updateSubmitTriggerState( $form.target , isFormValid );
|
|
5841
|
+
$form.target.dataset.ginaFormIsResetting = false;
|
|
5842
|
+
});
|
|
5843
|
+
})
|
|
5844
|
+
}
|
|
5845
|
+
// Form-level proxies: capture bubbled events from in-tree controls.
|
|
5846
|
+
addListener(gina, $target, 'reset', resetProxyHandler);
|
|
5847
|
+
addListener(gina, $target, 'keydown', keydownProxyHandler);
|
|
5848
|
+
addListener(gina, $target, 'keyup', keyupProxyHandler);
|
|
5849
|
+
addListener(gina, $target, 'focusin', focusinProxyHandler);
|
|
5850
|
+
addListener(gina, $target, 'focusout', focusoutProxyHandler);
|
|
5851
|
+
addListener(gina, $target, 'change', changeProxyHandler);
|
|
5852
|
+
addListener(gina, $target, 'click', clickProxyHandler);
|
|
5790
5853
|
}
|
|
5791
5854
|
|
|
5792
5855
|
proceed();
|
|
5793
5856
|
|
|
5857
|
+
// [HTML5 form-reassociation support] Per-control listener attachment for
|
|
5858
|
+
// reassociated controls (form="X" pointing at $target but living outside
|
|
5859
|
+
// $target's DOM subtree). Native events on these controls bubble through
|
|
5860
|
+
// their actual ancestors, not through $target, so the form-level proxies
|
|
5861
|
+
// above never see them. Per-control listeners ensure the proxy logic runs.
|
|
5862
|
+
// Tracked on $form.reassociatedListeners for unbindForm cleanup.
|
|
5863
|
+
//
|
|
5864
|
+
// Skipped events:
|
|
5865
|
+
// - 'reset': fires on the form directly when reset() is called or a reset
|
|
5866
|
+
// button submits to the form, regardless of where the button lives. The
|
|
5867
|
+
// form-level reset listener above captures this for both cases.
|
|
5868
|
+
// - 'submit': fires on the form directly when submit() is called or a submit
|
|
5869
|
+
// button submits. Same reasoning as reset.
|
|
5870
|
+
for (let _rIdx = 0, _rLen = $target.elements.length; _rIdx < _rLen; _rIdx++) {
|
|
5871
|
+
let $rEl = $target.elements[_rIdx];
|
|
5872
|
+
if (!$target.contains($rEl)) {
|
|
5873
|
+
addListener(gina, $rEl, 'keydown', keydownProxyHandler);
|
|
5874
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'keydown', fn: keydownProxyHandler });
|
|
5875
|
+
addListener(gina, $rEl, 'keyup', keyupProxyHandler);
|
|
5876
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'keyup', fn: keyupProxyHandler });
|
|
5877
|
+
addListener(gina, $rEl, 'focusin', focusinProxyHandler);
|
|
5878
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'focusin', fn: focusinProxyHandler });
|
|
5879
|
+
addListener(gina, $rEl, 'focusout', focusoutProxyHandler);
|
|
5880
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'focusout', fn: focusoutProxyHandler });
|
|
5881
|
+
addListener(gina, $rEl, 'change', changeProxyHandler);
|
|
5882
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'change', fn: changeProxyHandler });
|
|
5883
|
+
addListener(gina, $rEl, 'click', clickProxyHandler);
|
|
5884
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'click', fn: clickProxyHandler });
|
|
5885
|
+
}
|
|
5886
|
+
}
|
|
5887
|
+
|
|
5794
5888
|
|
|
5795
5889
|
|
|
5796
5890
|
|
|
@@ -5904,7 +5998,9 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
5904
5998
|
, linkId = null
|
|
5905
5999
|
, buttonId = null
|
|
5906
6000
|
;
|
|
5907
|
-
|
|
6001
|
+
// Owner-aware so reassociated submit buttons (<button form="X" type="submit">
|
|
6002
|
+
// outside $target's subtree) are bound to the correct form.
|
|
6003
|
+
$buttonsTMP = getOwnedElements($target, 'button');
|
|
5908
6004
|
if ( $buttonsTMP.length > 0 ) {
|
|
5909
6005
|
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5910
6006
|
if ($buttonsTMP[b].type == 'submit') {
|
|
@@ -5913,7 +6009,7 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
5913
6009
|
}
|
|
5914
6010
|
}
|
|
5915
6011
|
|
|
5916
|
-
// binding links
|
|
6012
|
+
// binding links — DOM-tree only; <a> doesn't participate in HTMLFormControlsCollection
|
|
5917
6013
|
$buttonsTMP = $target.getElementsByTagName('a');
|
|
5918
6014
|
if ( $buttonsTMP.length > 0 ) {
|
|
5919
6015
|
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|