jupiter-dynamic-forms 1.9.0 → 1.9.2

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/dist/index.mjs CHANGED
@@ -3939,6 +3939,45 @@ let JupiterDynamicForm = class extends LitElement {
3939
3939
  updated(changedProperties) {
3940
3940
  if (changedProperties.has("xbrlInput") || changedProperties.has("schema")) {
3941
3941
  this._initializeForm();
3942
+ } else if (changedProperties.has("language")) {
3943
+ console.log("🌐 Language changed from", changedProperties.get("language"), "to", this.language);
3944
+ this._handleLanguageChange();
3945
+ }
3946
+ }
3947
+ /**
3948
+ * Handle language change - rebuild schema with new language while preserving form data
3949
+ */
3950
+ _handleLanguageChange() {
3951
+ if (!this.xbrlInput) {
3952
+ console.warn("⚠️ Cannot change language without XBRL input data");
3953
+ return;
3954
+ }
3955
+ try {
3956
+ const currentFormData = { ...this._formData };
3957
+ const currentPreservedData = { ...this._preservedFormData };
3958
+ const currentTypedMemberData = { ...this._typedMemberData };
3959
+ const currentPreservedTypedMemberData = { ...this._preservedTypedMemberData };
3960
+ const currentSelectedRoles = [...this._selectedRoleIds];
3961
+ console.log("💾 Preserving form data during language change:", currentFormData);
3962
+ console.log("🔄 Rebuilding form schema with language:", this.language);
3963
+ this._currentSchema = XBRLFormBuilder.buildFormSchema(
3964
+ this.xbrlInput,
3965
+ this.periodStartDate,
3966
+ this.periodEndDate,
3967
+ this.language
3968
+ );
3969
+ this._allSections = [...this._currentSchema.sections];
3970
+ this._selectedRoleIds = currentSelectedRoles;
3971
+ this._applyRoleFilter();
3972
+ this._formData = currentFormData;
3973
+ this._preservedFormData = currentPreservedData;
3974
+ this._typedMemberData = currentTypedMemberData;
3975
+ this._preservedTypedMemberData = currentPreservedTypedMemberData;
3976
+ console.log("✅ Language changed successfully, form data preserved");
3977
+ this.requestUpdate("_currentSchema");
3978
+ this.requestUpdate("language");
3979
+ } catch (error) {
3980
+ console.error("❌ Error changing language:", error);
3942
3981
  }
3943
3982
  }
3944
3983
  _initializeForm() {
@@ -4911,6 +4950,18 @@ let JupiterDynamicForm = class extends LitElement {
4911
4950
  getState() {
4912
4951
  return this._getFormState();
4913
4952
  }
4953
+ /**
4954
+ * Change the form language and re-render labels while preserving data
4955
+ * @param newLanguage - ISO language code (e.g., 'en', 'nl', 'de')
4956
+ */
4957
+ changeLanguage(newLanguage) {
4958
+ if (this.language === newLanguage) {
4959
+ console.log("🌐 Language already set to", newLanguage);
4960
+ return;
4961
+ }
4962
+ console.log("🌐 Changing language from", this.language, "to", newLanguage);
4963
+ this.language = newLanguage;
4964
+ }
4914
4965
  render() {
4915
4966
  const errorCount = this._errors.filter((e2) => e2.severity === "error").length;
4916
4967
  const config = this.config || {};
@@ -4952,6 +5003,7 @@ let JupiterDynamicForm = class extends LitElement {
4952
5003
  </div>
4953
5004
  ` : schema.sections.map((section, index) => html`
4954
5005
  <jupiter-form-section
5006
+ .key="${section.id}-${this.language}"
4955
5007
  .section="${section}"
4956
5008
  .columns="${section.columns || this._columns}"
4957
5009
  .formData="${this._formData}"