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
|
@@ -13681,6 +13681,26 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
13681
13681
|
} //EO for $els
|
|
13682
13682
|
|
|
13683
13683
|
$els = null; $el = null; $elTMP = null; evt = null;
|
|
13684
|
+
|
|
13685
|
+
// [HTML5 form-reassociation support] Drain per-control listeners attached to
|
|
13686
|
+
// reassociated controls during bindForm. The element-by-tagName loops above
|
|
13687
|
+
// walk $form.target's descendant tree only, so reassociated controls (which
|
|
13688
|
+
// live outside that subtree) are invisible to them. We hold a side-table of
|
|
13689
|
+
// {el, evt, fn} triples and remove each listener directly from its element.
|
|
13690
|
+
// Direct removeEventListener (not the gina removeListener helper) avoids
|
|
13691
|
+
// touching gina.events bookkeeping that the form-level proxies still rely on.
|
|
13692
|
+
if ( Array.isArray($form.reassociatedListeners) ) {
|
|
13693
|
+
for (let i = 0, len = $form.reassociatedListeners.length; i < len; i++) {
|
|
13694
|
+
let entry = $form.reassociatedListeners[i];
|
|
13695
|
+
if (entry && entry.el && entry.el.removeEventListener) {
|
|
13696
|
+
entry.el.removeEventListener(entry.evt, entry.fn, false);
|
|
13697
|
+
} else if (entry && entry.el && entry.el.detachEvent) {
|
|
13698
|
+
entry.el.detachEvent('on' + entry.evt, entry.fn);
|
|
13699
|
+
}
|
|
13700
|
+
}
|
|
13701
|
+
$form.reassociatedListeners = [];
|
|
13702
|
+
}
|
|
13703
|
+
|
|
13684
13704
|
// reset error display
|
|
13685
13705
|
//resetErrorsDisplay($form);
|
|
13686
13706
|
// or
|
|
@@ -13812,18 +13832,54 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
13812
13832
|
if (!$form.fieldsSet)
|
|
13813
13833
|
$form.fieldsSet = {};
|
|
13814
13834
|
|
|
13835
|
+
// Side-table for per-control listeners attached on form-reassociated controls
|
|
13836
|
+
// (controls whose form="X" attribute points at $target but which live OUTSIDE
|
|
13837
|
+
// $target's DOM subtree). Drained by unbindForm.
|
|
13838
|
+
if (!Array.isArray($form.reassociatedListeners))
|
|
13839
|
+
$form.reassociatedListeners = [];
|
|
13840
|
+
|
|
13841
|
+
// Helper: collect controls owned by $form, including HTML5 form-reassociated
|
|
13842
|
+
// controls (those carrying `form="X"` outside the form's DOM subtree). Walks
|
|
13843
|
+
// $form.elements (HTMLFormControlsCollection — owner-aware) for the primary set,
|
|
13844
|
+
// then a secondary in-tree sweep filtered by `.form === $form` to catch elements
|
|
13845
|
+
// HTMLFormControlsCollection skips (type=image, nameless+idless). The `.form`
|
|
13846
|
+
// filter also excludes in-tree descendants whose `form="..."` points at a different
|
|
13847
|
+
// form (parent-form contamination guard).
|
|
13848
|
+
var getOwnedElements = function($form, tag) {
|
|
13849
|
+
var arr = []
|
|
13850
|
+
, seen = {}
|
|
13851
|
+
, tagUpper = tag.toUpperCase()
|
|
13852
|
+
;
|
|
13853
|
+
for (let i = 0, len = $form.elements.length; i < len; i++) {
|
|
13854
|
+
let $el = $form.elements[i];
|
|
13855
|
+
if ($el.tagName === tagUpper) {
|
|
13856
|
+
arr.push($el);
|
|
13857
|
+
if ($el.id) seen[$el.id] = true;
|
|
13858
|
+
}
|
|
13859
|
+
}
|
|
13860
|
+
var inTree = $form.getElementsByTagName(tag);
|
|
13861
|
+
for (let i = 0, len = inTree.length; i < len; i++) {
|
|
13862
|
+
let $el = inTree[i];
|
|
13863
|
+
if ($el.form === $form && (!$el.id || !seen[$el.id])) {
|
|
13864
|
+
arr.push($el);
|
|
13865
|
+
}
|
|
13866
|
+
}
|
|
13867
|
+
return arr;
|
|
13868
|
+
};
|
|
13869
|
+
|
|
13815
13870
|
// binding form elements
|
|
13816
13871
|
var type = null
|
|
13817
13872
|
, id = null
|
|
13818
13873
|
|
|
13819
|
-
// a|links
|
|
13874
|
+
// a|links — DOM-tree only (anchor elements don't carry the HTMLFormControlsCollection
|
|
13875
|
+
// owner relationship; reassociated <a data-gina-form-submit> is not a documented pattern)
|
|
13820
13876
|
, $a = $target.getElementsByTagName('a')
|
|
13821
13877
|
// input type: checkbox, radio, hidden, text, files, number, date ...
|
|
13822
|
-
, $inputs = $target
|
|
13878
|
+
, $inputs = getOwnedElements($target, 'input')
|
|
13823
13879
|
// textarea
|
|
13824
|
-
, $textareas = $target
|
|
13880
|
+
, $textareas = getOwnedElements($target, 'textarea')
|
|
13825
13881
|
// select
|
|
13826
|
-
, $select = $target
|
|
13882
|
+
, $select = getOwnedElements($target, 'select')
|
|
13827
13883
|
, allFormGroupedElements = {}
|
|
13828
13884
|
, allFormGroupNames = []
|
|
13829
13885
|
, formElementGroup = {}
|
|
@@ -13919,9 +13975,15 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
13919
13975
|
|
|
13920
13976
|
if ( /^(checkbox|radio)$/i.test($inputs[f].type) && typeof($form.fieldsSet[elId].defaultChecked) == 'undefined' ) {
|
|
13921
13977
|
|
|
13922
|
-
|
|
13978
|
+
// Read the IDL `defaultChecked` (which mirrors the HTML `checked`
|
|
13979
|
+
// attribute) instead of the live `.checked`. For form-reassociated
|
|
13980
|
+
// radios hit by Chromium's parse-time IDL/attribute desync — sister
|
|
13981
|
+
// bug to the updateRadio reconciliation at commit 80dd89f9 — `.checked`
|
|
13982
|
+
// reads FALSE at bind time despite the attribute being present, so
|
|
13983
|
+
// caching from `.checked` would hold the wrong default and a subsequent
|
|
13984
|
+
// form-reset would clear the originally-checked option.
|
|
13923
13985
|
$form.fieldsSet[elId].defaultChecked = (
|
|
13924
|
-
|
|
13986
|
+
$inputs[f].defaultChecked
|
|
13925
13987
|
||
|
|
13926
13988
|
/^(true|on)$/.test(defaultValue)
|
|
13927
13989
|
&& /^(checkbox)$/i.test($inputs[f].type)
|
|
@@ -14809,9 +14871,32 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
14809
14871
|
isInit = ( typeof(isInit) == 'undefined' || !isInit ) ? false : true;
|
|
14810
14872
|
isTriggedByUser = ( typeof(isTriggedByUser) == 'undefined' || !isTriggedByUser ) ? false : true;
|
|
14811
14873
|
|
|
14874
|
+
// [HTML5 form-reassociation] Reconcile the IDL `.checked` property with the
|
|
14875
|
+
// `checked` HTML attribute on init when they disagree. Background: when
|
|
14876
|
+
// multiple form-reassociated radios share a `name` AND are DOM descendants of
|
|
14877
|
+
// a common ancestor `<form>`, Chromium-based browsers uncheck the earlier ones
|
|
14878
|
+
// at parse time even though each radio belongs to a distinct form-owner per
|
|
14879
|
+
// the HTML5 spec — leaving `.checked = false` while the `checked` HTML
|
|
14880
|
+
// attribute is still present. Aligning the IDL state with the attribute
|
|
14881
|
+
// matches the author's intent and is a no-op for the normal (non-reassociated)
|
|
14882
|
+
// shape where the two already agree.
|
|
14883
|
+
if ( isInit && !$el.checked && $el.hasAttribute('checked') ) {
|
|
14884
|
+
$el.checked = true;
|
|
14885
|
+
}
|
|
14886
|
+
|
|
14812
14887
|
var checked = $el.checked, evt = null;
|
|
14813
14888
|
var isBoolean = /^(true|false)$/i.test($el.value);
|
|
14814
|
-
|
|
14889
|
+
|
|
14890
|
+
// [HTML5 form-reassociation] Scope the mutual-exclusion peer set by form-owner
|
|
14891
|
+
// per HTML5 spec ("the radio button group that contains a radio button a also
|
|
14892
|
+
// contains all the other input elements b that fulfill ... b's form owner is
|
|
14893
|
+
// a's form owner"). `getElementsByName` returns same-name radios across the
|
|
14894
|
+
// whole document regardless of owner — without this filter, unchecking peers
|
|
14895
|
+
// cross-fires into other forms whose radios happen to share the name.
|
|
14896
|
+
var rawRadioGroup = document.getElementsByName($el.name);
|
|
14897
|
+
radioGroup = Array.prototype.filter.call(rawRadioGroup, function(_r) {
|
|
14898
|
+
return _r.form === $el.form;
|
|
14899
|
+
});
|
|
14815
14900
|
|
|
14816
14901
|
// loop if radio group
|
|
14817
14902
|
for (let r = 0, rLen = radioGroup.length; r < rLen; ++r) {
|
|
@@ -14947,338 +15032,347 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
14947
15032
|
|
|
14948
15033
|
evt = 'click';
|
|
14949
15034
|
|
|
14950
|
-
|
|
14951
|
-
|
|
14952
|
-
|
|
14953
|
-
|
|
14954
|
-
|
|
14955
|
-
|
|
14956
|
-
|
|
15035
|
+
// [HTML5 form-reassociation support] Form-level proxy handler bodies extracted as
|
|
15036
|
+
// named expressions so the same handlers can be attached on $target (form-level —
|
|
15037
|
+
// captures bubbled events from in-tree controls) AND on each reassociated control
|
|
15038
|
+
// (per-control — events on reassociated controls bubble through THEIR ancestors,
|
|
15039
|
+
// not through $target, so the form-level listener never fires for them). Handler
|
|
15040
|
+
// bodies read event.target.id and dispatch via gina.events; they don't depend on
|
|
15041
|
+
// event.currentTarget being the form (the few places that reference currentTarget
|
|
15042
|
+
// are guarded fallbacks that no-op on a control).
|
|
15043
|
+
var resetProxyHandler = function(event) {
|
|
15044
|
+
var $el = event.target;
|
|
15045
|
+
if (
|
|
15046
|
+
typeof(event.defaultPrevented) != 'undefined'
|
|
15047
|
+
&& event.defaultPrevented
|
|
15048
|
+
) {
|
|
15049
|
+
return false;
|
|
15050
|
+
}
|
|
15051
|
+
event.preventDefault();
|
|
15052
|
+
var _evt = $el.id;
|
|
15053
|
+
if (!_evt) return false;
|
|
15054
|
+
if ( !/^reset\./.test(_evt) ) {
|
|
15055
|
+
_evt = 'reset.'+$el.id
|
|
15056
|
+
}
|
|
15057
|
+
if (gina.events[_evt]) {
|
|
15058
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
15059
|
+
}
|
|
15060
|
+
};
|
|
15061
|
+
var keydownProxyHandler = function(event) {
|
|
15062
|
+
var $el = event.target;
|
|
15063
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15064
|
+
return false;
|
|
14957
15065
|
|
|
14958
|
-
|
|
14959
|
-
var $form = instance.$forms[_id];
|
|
14960
|
-
$form.target.dataset.ginaFormIsResetting = true;
|
|
14961
|
-
resetFields($form);
|
|
14962
|
-
// forcing it
|
|
14963
|
-
var validationInfo = getFormValidationInfos($form.target, $form.rules, true);
|
|
14964
|
-
var fields = validationInfo.fields;
|
|
14965
|
-
var $fields = validationInfo.$fields;
|
|
15066
|
+
keyboardMapping[event.keyCode] = event.type == 'keydown';
|
|
14966
15067
|
|
|
14967
|
-
|
|
14968
|
-
|
|
14969
|
-
console.debug('silent reset validation result[isValid:'+isFormValid+']: ', result);
|
|
14970
|
-
//resetting error display
|
|
14971
|
-
handleErrorsDisplay($form.target, {});
|
|
15068
|
+
var _evt = $el.id;
|
|
15069
|
+
if (!_evt) return false;
|
|
14972
15070
|
|
|
14973
|
-
|
|
14974
|
-
|
|
14975
|
-
});
|
|
14976
|
-
})
|
|
15071
|
+
if ( !/^keydown\./.test(_evt) ) {
|
|
15072
|
+
_evt = 'keydown.'+$el.id
|
|
14977
15073
|
}
|
|
14978
|
-
|
|
14979
|
-
|
|
14980
|
-
|
|
14981
|
-
|
|
14982
|
-
|
|
14983
|
-
|
|
14984
|
-
|
|
14985
|
-
|
|
14986
|
-
|
|
14987
|
-
}
|
|
14988
|
-
// Fixed on 2021/06/08 - because of radio reset
|
|
14989
|
-
event.preventDefault();
|
|
15074
|
+
if (gina.events[_evt]) {
|
|
15075
|
+
cancelEvent(event);
|
|
15076
|
+
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
15077
|
+
}
|
|
15078
|
+
};
|
|
15079
|
+
var keyupProxyHandler = function(event) {
|
|
15080
|
+
var $el = event.target;
|
|
15081
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15082
|
+
return false;
|
|
14990
15083
|
|
|
14991
|
-
|
|
14992
|
-
|
|
15084
|
+
if (keyboardMapping[event.keyCode]) {
|
|
15085
|
+
delete keyboardMapping[event.keyCode]
|
|
15086
|
+
}
|
|
14993
15087
|
|
|
14994
|
-
|
|
14995
|
-
|
|
14996
|
-
|
|
14997
|
-
|
|
14998
|
-
|
|
14999
|
-
|
|
15000
|
-
|
|
15001
|
-
|
|
15002
|
-
|
|
15003
|
-
|
|
15004
|
-
|
|
15005
|
-
|
|
15006
|
-
|
|
15088
|
+
var _evt = $el.id;
|
|
15089
|
+
if (!_evt) return false;
|
|
15090
|
+
if ( !/^keyup\./.test(_evt) ) {
|
|
15091
|
+
_evt = 'keyup.'+$el.id
|
|
15092
|
+
}
|
|
15093
|
+
if (gina.events[_evt]) {
|
|
15094
|
+
cancelEvent(event);
|
|
15095
|
+
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
15096
|
+
}
|
|
15097
|
+
};
|
|
15098
|
+
var focusinProxyHandler = function(event) {
|
|
15099
|
+
var $el = event.target;
|
|
15100
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15101
|
+
return false;
|
|
15007
15102
|
|
|
15008
|
-
|
|
15103
|
+
var _evt = $el.id;
|
|
15104
|
+
if (!_evt) return false;
|
|
15009
15105
|
|
|
15010
|
-
|
|
15011
|
-
|
|
15106
|
+
if ( !/^focusin\./.test(_evt) ) {
|
|
15107
|
+
_evt = 'focusin.'+$el.id
|
|
15108
|
+
}
|
|
15109
|
+
if (gina.events[_evt]) {
|
|
15110
|
+
cancelEvent(event);
|
|
15012
15111
|
|
|
15013
|
-
|
|
15014
|
-
|
|
15015
|
-
|
|
15016
|
-
|
|
15017
|
-
|
|
15018
|
-
|
|
15112
|
+
// event.target.form works for both in-tree and reassociated controls
|
|
15113
|
+
// (form-association is owner-relationship-aware); event.currentTarget
|
|
15114
|
+
// is the form when attached form-level, the control when per-control.
|
|
15115
|
+
var formId = event.target.form.getAttribute('id') || ((event.currentTarget && event.currentTarget.getAttribute) ? event.currentTarget.getAttribute('id') : null);
|
|
15116
|
+
var lastFocused = {
|
|
15117
|
+
id : $el.id,
|
|
15118
|
+
name: $el.name
|
|
15119
|
+
};
|
|
15120
|
+
if (!instance.$forms[formId].lastFocused.length) {
|
|
15121
|
+
instance.$forms[formId].lastFocused[0] = lastFocused;
|
|
15122
|
+
} else {
|
|
15123
|
+
instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
|
|
15019
15124
|
}
|
|
15020
|
-
|
|
15021
|
-
// keyup proxy - updating keyboardMapping
|
|
15022
|
-
addListener(gina, $target, 'keyup', function(event) {
|
|
15023
|
-
var $el = event.target;
|
|
15024
|
-
// prevent event to be triggered twice
|
|
15025
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15026
|
-
return false;
|
|
15125
|
+
lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
|
|
15027
15126
|
|
|
15028
|
-
|
|
15029
|
-
delete keyboardMapping[event.keyCode]
|
|
15030
|
-
}
|
|
15127
|
+
instance.$forms[formId].lastFocused.splice(2);
|
|
15031
15128
|
|
|
15032
|
-
|
|
15033
|
-
|
|
15034
|
-
|
|
15035
|
-
|
|
15036
|
-
|
|
15037
|
-
|
|
15038
|
-
cancelEvent(event);
|
|
15039
|
-
triggerEvent(gina, $el, _evt, event.detail, event);
|
|
15040
|
-
}
|
|
15041
|
-
});
|
|
15042
|
-
|
|
15043
|
-
// focusin proxy
|
|
15044
|
-
addListener(gina, $target, 'focusin', function(event) {
|
|
15045
|
-
var $el = event.target;
|
|
15046
|
-
// prevent event to be triggered twice
|
|
15047
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15129
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
15130
|
+
}
|
|
15131
|
+
};
|
|
15132
|
+
var focusoutProxyHandler = function(event) {
|
|
15133
|
+
var $el = event.target;
|
|
15134
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15048
15135
|
return false;
|
|
15049
15136
|
|
|
15050
|
-
|
|
15051
|
-
|
|
15137
|
+
var _evt = $el.id;
|
|
15138
|
+
if (!_evt) return false;
|
|
15052
15139
|
|
|
15053
|
-
|
|
15054
|
-
|
|
15055
|
-
|
|
15056
|
-
|
|
15057
|
-
|
|
15140
|
+
if ( !/^focusout\./.test(_evt) ) {
|
|
15141
|
+
_evt = 'focusout.'+$el.id
|
|
15142
|
+
}
|
|
15143
|
+
if (gina.events[_evt]) {
|
|
15144
|
+
cancelEvent(event);
|
|
15058
15145
|
|
|
15059
|
-
|
|
15060
|
-
|
|
15061
|
-
|
|
15062
|
-
|
|
15063
|
-
|
|
15064
|
-
|
|
15065
|
-
|
|
15066
|
-
if (!instance.$forms[formId].lastFocused.length) {
|
|
15067
|
-
instance.$forms[formId].lastFocused[0] = lastFocused;
|
|
15068
|
-
} else {
|
|
15069
|
-
instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
|
|
15070
|
-
}
|
|
15071
|
-
lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
|
|
15146
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
15147
|
+
}
|
|
15148
|
+
};
|
|
15149
|
+
var changeProxyHandler = function(event) {
|
|
15150
|
+
var $el = event.target;
|
|
15151
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15152
|
+
return false;
|
|
15072
15153
|
|
|
15073
|
-
|
|
15074
|
-
|
|
15154
|
+
var _evt = $el.id;
|
|
15155
|
+
if (!_evt) return false;
|
|
15075
15156
|
|
|
15076
|
-
|
|
15157
|
+
if ( !/^change\./.test(_evt) ) {
|
|
15158
|
+
_evt = 'change.'+$el.id
|
|
15159
|
+
}
|
|
15160
|
+
if (gina.events[_evt]) {
|
|
15161
|
+
cancelEvent(event);
|
|
15162
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
15163
|
+
}
|
|
15164
|
+
};
|
|
15165
|
+
var clickProxyHandler = function(event) {
|
|
15166
|
+
var $el = event.target;
|
|
15077
15167
|
|
|
15078
|
-
|
|
15079
|
-
}
|
|
15080
|
-
});
|
|
15081
|
-
// focusout proxy
|
|
15082
|
-
addListener(gina, $target, 'focusout', function(event) {
|
|
15083
|
-
// Never preventDefault from a proxy listner
|
|
15084
|
-
var $el = event.target;
|
|
15085
|
-
// prevent event to be triggered twice
|
|
15086
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15087
|
-
return false;
|
|
15168
|
+
var isCustomSubmit = false, isCaseIgnored = false;
|
|
15088
15169
|
|
|
15089
|
-
|
|
15090
|
-
|
|
15170
|
+
if (
|
|
15171
|
+
/(label)/i.test(event.target.tagName)
|
|
15172
|
+
&& typeof(event.target.control) != 'undefined'
|
|
15173
|
+
&& event.target.control != null
|
|
15174
|
+
&& /(checkbox|radio)/i.test(event.target.control.type)
|
|
15175
|
+
||
|
|
15176
|
+
/(label)/i.test(event.target.parentNode.tagName)
|
|
15177
|
+
&& typeof(event.target.parentNode.control) != 'undefined'
|
|
15178
|
+
&& event.target.parentNode.control != null
|
|
15179
|
+
&& /(checkbox|radio)/i.test(event.target.parentNode.control.type)
|
|
15180
|
+
) {
|
|
15181
|
+
var isCaseIgnored = (
|
|
15182
|
+
event.target.getAttribute('for')
|
|
15183
|
+
||
|
|
15184
|
+
event.target.parentNode.getAttribute('for')
|
|
15185
|
+
) ? true : false
|
|
15186
|
+
;
|
|
15187
|
+
$el = event.target.control || event.target.parentNode.control;
|
|
15091
15188
|
|
|
15092
|
-
|
|
15093
|
-
|
|
15189
|
+
}
|
|
15190
|
+
if (
|
|
15191
|
+
!$el.disabled
|
|
15192
|
+
&& /(checkbox|radio)/i.test($el.type)
|
|
15193
|
+
&& !isCaseIgnored
|
|
15194
|
+
) {
|
|
15195
|
+
if ( /checkbox/i.test($el.type) ) {
|
|
15196
|
+
return updateCheckBox($el);
|
|
15197
|
+
} else if ( /radio/i.test($el.type) ) {
|
|
15198
|
+
return updateRadio($el, false, true);
|
|
15094
15199
|
}
|
|
15095
|
-
|
|
15096
|
-
|
|
15200
|
+
}
|
|
15201
|
+
|
|
15097
15202
|
|
|
15098
|
-
|
|
15203
|
+
if (
|
|
15204
|
+
/(button|input)/i.test($el.tagName) && /(submit|checkbox|radio)/i.test($el.type)
|
|
15205
|
+
|| /a/i.test($el.tagName) && $el.attributes.getNamedItem('data-gina-form-submit')
|
|
15206
|
+
|| /a/i.test($el.parentNode.tagName) && $el.parentNode.attributes.getNamedItem('data-gina-form-submit')
|
|
15207
|
+
) {
|
|
15208
|
+
var namedItem = $el.attributes.getNamedItem('data-gina-form-submit');
|
|
15209
|
+
var parentNamedItem = $el.parentNode.attributes.getNamedItem('data-gina-form-submit');
|
|
15210
|
+
if (
|
|
15211
|
+
namedItem
|
|
15212
|
+
||
|
|
15213
|
+
parentNamedItem
|
|
15214
|
+
) {
|
|
15215
|
+
isCustomSubmit = true;
|
|
15216
|
+
// For form-level (event.currentTarget == form), reads the form's
|
|
15217
|
+
// method attribute. For per-control on a reassociated submit, the
|
|
15218
|
+
// currentTarget fallback yields null and the if(newFormMethod) below
|
|
15219
|
+
// skips the override block — typical reassociated submits don't need it.
|
|
15220
|
+
var newFormMethod = null;
|
|
15221
|
+
var $methodSrc = (event.currentTarget && event.currentTarget.getAttribute) ? event.currentTarget : ($el.form || null);
|
|
15222
|
+
if (namedItem) {
|
|
15223
|
+
newFormMethod = $el.getAttribute('data-gina-form-submit-method') || ($methodSrc ? $methodSrc.getAttribute('method') : null);
|
|
15224
|
+
} else {
|
|
15225
|
+
newFormMethod = $el.parentNode.getAttribute('data-gina-form-submit-method') || ($methodSrc ? $methodSrc.getAttribute('method') : null);
|
|
15226
|
+
}
|
|
15227
|
+
if (newFormMethod) {
|
|
15228
|
+
if (namedItem && $el.form) {
|
|
15229
|
+
if ($el.form.setAttribute) {
|
|
15230
|
+
$el.form.setAttribute('method', newFormMethod);
|
|
15231
|
+
} else if (event.currentTarget && event.currentTarget.setAttribute) {
|
|
15232
|
+
event.currentTarget.setAttribute('method', newFormMethod);
|
|
15233
|
+
}
|
|
15234
|
+
} else if ($el.parentNode.form) {
|
|
15235
|
+
if ($el.parentNode.form.setAttribute) {
|
|
15236
|
+
$el.parentNode.form.setAttribute('method', newFormMethod);
|
|
15237
|
+
} else if (event.currentTarget && event.currentTarget.setAttribute) {
|
|
15238
|
+
event.currentTarget.setAttribute('method', newFormMethod);
|
|
15239
|
+
}
|
|
15240
|
+
}
|
|
15241
|
+
}
|
|
15242
|
+
}
|
|
15243
|
+
if ( typeof($el.id) == 'undefined' || !$el.getAttribute('id') ) {
|
|
15244
|
+
$el.setAttribute('id', 'click.' + uuid() );
|
|
15245
|
+
$el.id = $el.getAttribute('id')
|
|
15246
|
+
} else {
|
|
15247
|
+
$el.id = $el.getAttribute('id')
|
|
15099
15248
|
}
|
|
15100
|
-
});
|
|
15101
15249
|
|
|
15102
|
-
// change proxy
|
|
15103
|
-
addListener(gina, $target, 'change', function(event) {
|
|
15104
|
-
// Never preventDefault from a proxy listner
|
|
15105
|
-
var $el = event.target;
|
|
15106
|
-
// prevent event to be triggered twice
|
|
15107
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15108
|
-
return false;
|
|
15109
15250
|
|
|
15110
|
-
|
|
15111
|
-
if (!_evt) return false;
|
|
15251
|
+
if (/^click\./.test($el.id) || withRules) {
|
|
15112
15252
|
|
|
15113
|
-
|
|
15114
|
-
_evt = 'change.'+$el.id
|
|
15115
|
-
}
|
|
15116
|
-
if (gina.events[_evt]) {
|
|
15117
|
-
cancelEvent(event);
|
|
15118
|
-
triggerEvent(gina, $el, _evt, event.detail);
|
|
15119
|
-
}
|
|
15120
|
-
});
|
|
15121
|
-
// click proxy
|
|
15122
|
-
addListener(gina, $target, 'click', function(event) {
|
|
15123
|
-
// Never preventDefault from a proxy listner
|
|
15124
|
-
var $el = event.target;
|
|
15125
|
-
// prevent event to be triggered twice
|
|
15126
|
-
// if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15127
|
-
// return false;
|
|
15253
|
+
var _evt = $el.id;
|
|
15128
15254
|
|
|
15129
|
-
|
|
15255
|
+
if (!_evt) return false;
|
|
15130
15256
|
|
|
15131
|
-
|
|
15132
|
-
|
|
15133
|
-
|
|
15134
|
-
&& event.target.control != null
|
|
15135
|
-
&& /(checkbox|radio)/i.test(event.target.control.type)
|
|
15136
|
-
||
|
|
15137
|
-
/(label)/i.test(event.target.parentNode.tagName)
|
|
15138
|
-
&& typeof(event.target.parentNode.control) != 'undefined'
|
|
15139
|
-
&& event.target.parentNode.control != null
|
|
15140
|
-
&& /(checkbox|radio)/i.test(event.target.parentNode.control.type)
|
|
15141
|
-
) {
|
|
15142
|
-
var isCaseIgnored = (
|
|
15143
|
-
event.target.getAttribute('for')
|
|
15144
|
-
||
|
|
15145
|
-
event.target.parentNode.getAttribute('for')
|
|
15146
|
-
) ? true : false
|
|
15147
|
-
;
|
|
15148
|
-
// if `event.target.control` not working on all browser,
|
|
15149
|
-
// try to detect `for` attribute OR check if on of the label's event.target.children is an input & type == (checkbox|radio)
|
|
15150
|
-
$el = event.target.control || event.target.parentNode.control;
|
|
15257
|
+
if ( !/^click\./.test(_evt) ) {
|
|
15258
|
+
_evt = $el.id
|
|
15259
|
+
}
|
|
15151
15260
|
|
|
15152
|
-
|
|
15153
|
-
|
|
15154
|
-
|
|
15155
|
-
|
|
15156
|
-
|
|
15157
|
-
|
|
15158
|
-
|
|
15159
|
-
|
|
15160
|
-
|
|
15161
|
-
} else if ( /radio/i.test($el.type) ) {
|
|
15162
|
-
return updateRadio($el, false, true);
|
|
15261
|
+
if (
|
|
15262
|
+
!$el.disabled
|
|
15263
|
+
&& /(checkbox|radio)/i.test($el.type)
|
|
15264
|
+
) {
|
|
15265
|
+
if ( /checkbox/i.test($el.type) ) {
|
|
15266
|
+
return updateCheckBox($el);
|
|
15267
|
+
} else if ( /radio/i.test($el.type) ) {
|
|
15268
|
+
return updateRadio($el, false, true);
|
|
15269
|
+
}
|
|
15163
15270
|
}
|
|
15164
|
-
}
|
|
15165
15271
|
|
|
15272
|
+
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15273
|
+
return false;
|
|
15166
15274
|
|
|
15167
|
-
// include only these elements for the binding
|
|
15168
|
-
if (
|
|
15169
|
-
/(button|input)/i.test($el.tagName) && /(submit|checkbox|radio)/i.test($el.type)
|
|
15170
|
-
|| /a/i.test($el.tagName) && $el.attributes.getNamedItem('data-gina-form-submit')
|
|
15171
|
-
// You could also have a click on a child element like <a href="#"><span>click me</span></a>
|
|
15172
|
-
|| /a/i.test($el.parentNode.tagName) && $el.parentNode.attributes.getNamedItem('data-gina-form-submit')
|
|
15173
|
-
) {
|
|
15174
|
-
var namedItem = $el.attributes.getNamedItem('data-gina-form-submit');
|
|
15175
|
-
var parentNamedItem = $el.parentNode.attributes.getNamedItem('data-gina-form-submit');
|
|
15176
15275
|
if (
|
|
15177
|
-
|
|
15276
|
+
$el.type == 'submit' && !/^submit\./i.test(_evt)
|
|
15178
15277
|
||
|
|
15179
|
-
|
|
15278
|
+
isCustomSubmit && !/^submit\./i.test(_evt)
|
|
15180
15279
|
) {
|
|
15181
|
-
|
|
15182
|
-
|
|
15183
|
-
var newFormMethod = null;
|
|
15184
|
-
if (namedItem) {
|
|
15185
|
-
newFormMethod = $el.getAttribute('data-gina-form-submit-method') || event.currentTarget.getAttribute('method');
|
|
15186
|
-
} else {
|
|
15187
|
-
newFormMethod = $el.parentNode.getAttribute('data-gina-form-submit-method') || event.currentTarget.getAttribute('method');
|
|
15188
|
-
}
|
|
15189
|
-
if (newFormMethod) {
|
|
15190
|
-
// Backup originalMethod
|
|
15191
|
-
|
|
15192
|
-
// Rewrite current method
|
|
15193
|
-
if (namedItem && $el.form) {
|
|
15194
|
-
if ($el.form.setAttribute) {
|
|
15195
|
-
$el.form.setAttribute('method', newFormMethod);
|
|
15196
|
-
} else {
|
|
15197
|
-
event.currentTarget.setAttribute('method', newFormMethod);
|
|
15198
|
-
}
|
|
15199
|
-
} else if ($el.parentNode.form) {
|
|
15200
|
-
if ($el.parentNode.form.setAttribute) {
|
|
15201
|
-
$el.parentNode.form.setAttribute('method', newFormMethod);
|
|
15202
|
-
} else {
|
|
15203
|
-
event.currentTarget.setAttribute('method', newFormMethod);
|
|
15204
|
-
}
|
|
15205
|
-
}
|
|
15206
|
-
}
|
|
15280
|
+
_evt = 'submit.'+_evt;
|
|
15281
|
+
instance.$forms[$form.id].submitTrigger = $form.submitTrigger = $el.id;
|
|
15207
15282
|
}
|
|
15208
|
-
|
|
15209
|
-
|
|
15210
|
-
$el.setAttribute('id', 'click.' + uuid() );
|
|
15211
|
-
$el.id = $el.getAttribute('id')
|
|
15212
|
-
} else {
|
|
15213
|
-
$el.id = $el.getAttribute('id')
|
|
15283
|
+
if ( $el.type == 'reset' && !/^reset\./i.test(_evt) ) {
|
|
15284
|
+
_evt = 'reset.'+_evt
|
|
15214
15285
|
}
|
|
15215
15286
|
|
|
15287
|
+
if (gina.events[_evt]) {
|
|
15288
|
+
cancelEvent(event);
|
|
15216
15289
|
|
|
15217
|
-
|
|
15218
|
-
|
|
15219
|
-
|
|
15220
|
-
|
|
15221
|
-
|
|
15222
|
-
|
|
15223
|
-
|
|
15224
|
-
|
|
15225
|
-
|
|
15226
|
-
|
|
15227
|
-
// normal case
|
|
15228
|
-
if (
|
|
15229
|
-
!$el.disabled
|
|
15230
|
-
&& /(checkbox|radio)/i.test($el.type)
|
|
15231
|
-
) {
|
|
15232
|
-
//event.stopPropagation();
|
|
15233
|
-
// apply checked choice : if true -> set to false, and if false -> set to true
|
|
15234
|
-
if ( /checkbox/i.test($el.type) ) {
|
|
15235
|
-
return updateCheckBox($el);
|
|
15236
|
-
} else if ( /radio/i.test($el.type) ) {
|
|
15237
|
-
return updateRadio($el, false, true);
|
|
15238
|
-
}
|
|
15239
|
-
}
|
|
15240
|
-
|
|
15241
|
-
// prevent event to be triggered twice
|
|
15242
|
-
if ( typeof(event.defaultPrevented) != 'undefined' && event.defaultPrevented )
|
|
15243
|
-
return false;
|
|
15290
|
+
triggerEvent(gina, $el, _evt, event.detail);
|
|
15291
|
+
} else if (
|
|
15292
|
+
isCustomSubmit
|
|
15293
|
+
&& typeof(this.id) != 'undefined'
|
|
15294
|
+
&& this.id != ''
|
|
15295
|
+
&& typeof(gina.validator.$forms[this.id]) != 'undefined'
|
|
15296
|
+
) {
|
|
15297
|
+
gina.validator.getFormById(this.id).submit();
|
|
15298
|
+
cancelEvent(event);
|
|
15299
|
+
}
|
|
15244
15300
|
|
|
15245
|
-
|
|
15246
|
-
|
|
15247
|
-
|
|
15248
|
-
||
|
|
15249
|
-
isCustomSubmit && !/^submit\./i.test(_evt)
|
|
15250
|
-
) {
|
|
15251
|
-
_evt = 'submit.'+_evt;
|
|
15252
|
-
// Updating submitTrigger in case it has been changed on the fly
|
|
15253
|
-
instance.$forms[$form.id].submitTrigger = $form.submitTrigger = $el.id;
|
|
15254
|
-
}
|
|
15255
|
-
// in case we have multiple reset type buttons
|
|
15256
|
-
if ( $el.type == 'reset' && !/^reset\./i.test(_evt) ) {
|
|
15257
|
-
_evt = 'reset.'+_evt
|
|
15258
|
-
}
|
|
15301
|
+
}
|
|
15302
|
+
}
|
|
15303
|
+
};
|
|
15259
15304
|
|
|
15260
|
-
|
|
15261
|
-
|
|
15305
|
+
proceed = function () {
|
|
15306
|
+
var subEvent = null;
|
|
15307
|
+
// handle form reset
|
|
15308
|
+
subEvent = 'reset.'+$target.id;
|
|
15309
|
+
if ( typeof(gina.events[subEvent]) == 'undefined' ) {
|
|
15310
|
+
addListener(gina, $target, subEvent, function(e) {
|
|
15311
|
+
e.preventDefault();
|
|
15262
15312
|
|
|
15263
|
-
|
|
15264
|
-
|
|
15265
|
-
|
|
15266
|
-
|
|
15267
|
-
|
|
15268
|
-
|
|
15269
|
-
|
|
15270
|
-
|
|
15271
|
-
cancelEvent(event); // stop #navigation
|
|
15272
|
-
}
|
|
15313
|
+
var _id = e.currentTarget.id || e.target.id
|
|
15314
|
+
var $form = instance.$forms[_id];
|
|
15315
|
+
$form.target.dataset.ginaFormIsResetting = true;
|
|
15316
|
+
resetFields($form);
|
|
15317
|
+
// forcing it
|
|
15318
|
+
var validationInfo = getFormValidationInfos($form.target, $form.rules, true);
|
|
15319
|
+
var fields = validationInfo.fields;
|
|
15320
|
+
var $fields = validationInfo.$fields;
|
|
15273
15321
|
|
|
15274
|
-
|
|
15275
|
-
|
|
15322
|
+
validate($form.target, fields, $fields, $form.rules, function onSilentResetValidation(result){
|
|
15323
|
+
var isFormValid = result.isValid();
|
|
15324
|
+
console.debug('silent reset validation result[isValid:'+isFormValid+']: ', result);
|
|
15325
|
+
//resetting error display
|
|
15326
|
+
handleErrorsDisplay($form.target, {});
|
|
15276
15327
|
|
|
15277
|
-
|
|
15328
|
+
updateSubmitTriggerState( $form.target , isFormValid );
|
|
15329
|
+
$form.target.dataset.ginaFormIsResetting = false;
|
|
15330
|
+
});
|
|
15331
|
+
})
|
|
15332
|
+
}
|
|
15333
|
+
// Form-level proxies: capture bubbled events from in-tree controls.
|
|
15334
|
+
addListener(gina, $target, 'reset', resetProxyHandler);
|
|
15335
|
+
addListener(gina, $target, 'keydown', keydownProxyHandler);
|
|
15336
|
+
addListener(gina, $target, 'keyup', keyupProxyHandler);
|
|
15337
|
+
addListener(gina, $target, 'focusin', focusinProxyHandler);
|
|
15338
|
+
addListener(gina, $target, 'focusout', focusoutProxyHandler);
|
|
15339
|
+
addListener(gina, $target, 'change', changeProxyHandler);
|
|
15340
|
+
addListener(gina, $target, 'click', clickProxyHandler);
|
|
15278
15341
|
}
|
|
15279
15342
|
|
|
15280
15343
|
proceed();
|
|
15281
15344
|
|
|
15345
|
+
// [HTML5 form-reassociation support] Per-control listener attachment for
|
|
15346
|
+
// reassociated controls (form="X" pointing at $target but living outside
|
|
15347
|
+
// $target's DOM subtree). Native events on these controls bubble through
|
|
15348
|
+
// their actual ancestors, not through $target, so the form-level proxies
|
|
15349
|
+
// above never see them. Per-control listeners ensure the proxy logic runs.
|
|
15350
|
+
// Tracked on $form.reassociatedListeners for unbindForm cleanup.
|
|
15351
|
+
//
|
|
15352
|
+
// Skipped events:
|
|
15353
|
+
// - 'reset': fires on the form directly when reset() is called or a reset
|
|
15354
|
+
// button submits to the form, regardless of where the button lives. The
|
|
15355
|
+
// form-level reset listener above captures this for both cases.
|
|
15356
|
+
// - 'submit': fires on the form directly when submit() is called or a submit
|
|
15357
|
+
// button submits. Same reasoning as reset.
|
|
15358
|
+
for (let _rIdx = 0, _rLen = $target.elements.length; _rIdx < _rLen; _rIdx++) {
|
|
15359
|
+
let $rEl = $target.elements[_rIdx];
|
|
15360
|
+
if (!$target.contains($rEl)) {
|
|
15361
|
+
addListener(gina, $rEl, 'keydown', keydownProxyHandler);
|
|
15362
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'keydown', fn: keydownProxyHandler });
|
|
15363
|
+
addListener(gina, $rEl, 'keyup', keyupProxyHandler);
|
|
15364
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'keyup', fn: keyupProxyHandler });
|
|
15365
|
+
addListener(gina, $rEl, 'focusin', focusinProxyHandler);
|
|
15366
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'focusin', fn: focusinProxyHandler });
|
|
15367
|
+
addListener(gina, $rEl, 'focusout', focusoutProxyHandler);
|
|
15368
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'focusout', fn: focusoutProxyHandler });
|
|
15369
|
+
addListener(gina, $rEl, 'change', changeProxyHandler);
|
|
15370
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'change', fn: changeProxyHandler });
|
|
15371
|
+
addListener(gina, $rEl, 'click', clickProxyHandler);
|
|
15372
|
+
$form.reassociatedListeners.push({ el: $rEl, evt: 'click', fn: clickProxyHandler });
|
|
15373
|
+
}
|
|
15374
|
+
}
|
|
15375
|
+
|
|
15282
15376
|
|
|
15283
15377
|
|
|
15284
15378
|
|
|
@@ -15392,7 +15486,9 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
15392
15486
|
, linkId = null
|
|
15393
15487
|
, buttonId = null
|
|
15394
15488
|
;
|
|
15395
|
-
|
|
15489
|
+
// Owner-aware so reassociated submit buttons (<button form="X" type="submit">
|
|
15490
|
+
// outside $target's subtree) are bound to the correct form.
|
|
15491
|
+
$buttonsTMP = getOwnedElements($target, 'button');
|
|
15396
15492
|
if ( $buttonsTMP.length > 0 ) {
|
|
15397
15493
|
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
15398
15494
|
if ($buttonsTMP[b].type == 'submit') {
|
|
@@ -15401,7 +15497,7 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
15401
15497
|
}
|
|
15402
15498
|
}
|
|
15403
15499
|
|
|
15404
|
-
// binding links
|
|
15500
|
+
// binding links — DOM-tree only; <a> doesn't participate in HTMLFormControlsCollection
|
|
15405
15501
|
$buttonsTMP = $target.getElementsByTagName('a');
|
|
15406
15502
|
if ( $buttonsTMP.length > 0 ) {
|
|
15407
15503
|
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
@@ -19624,7 +19720,12 @@ function Collection(content, options) {
|
|
|
19624
19720
|
if ( typeof(content[entry]._uuid) != 'undefined' ) {
|
|
19625
19721
|
content[entry]._hasItsOwnUuid = true;
|
|
19626
19722
|
} else {
|
|
19627
|
-
|
|
19723
|
+
// 16-char base-62 (~4.77e28 space) — at the default 4-char (~14.78M) the
|
|
19724
|
+
// birthday-paradox collision rate at N=917 is ~2.84%, and `notIn()`'s
|
|
19725
|
+
// _uuid-keyed splice removes the wrong record on collision. 16 keeps the
|
|
19726
|
+
// collision rate below 1e-13 up to N=100M, future-proof for any practical
|
|
19727
|
+
// collection size.
|
|
19728
|
+
content[entry]._uuid = uuid(16);
|
|
19628
19729
|
}
|
|
19629
19730
|
|
|
19630
19731
|
// To avoid duplicate entries
|
|
@@ -20407,8 +20508,8 @@ function Collection(content, options) {
|
|
|
20407
20508
|
|
|
20408
20509
|
var tmpContent = Array.isArray(this) ? this : content;
|
|
20409
20510
|
|
|
20410
|
-
// Indexing;
|
|
20411
|
-
set._uuid = uuid();
|
|
20511
|
+
// Indexing; 16-char to match the constructor's collision-safe size.
|
|
20512
|
+
set._uuid = uuid(16);
|
|
20412
20513
|
tmpContent.push(set);
|
|
20413
20514
|
|
|
20414
20515
|
result = tmpContent;
|