diff --git a/.gitignore b/.gitignore index 5de8473..8f357ec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,12 +2,17 @@ logs *.log npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* # Dependency directories node_modules # Build generated files dist +dist-ssr lib lib-dts lib-commonjs @@ -17,6 +22,7 @@ release solution temp *.sppkg +*.local .heft # Coverage directory used by tools like istanbul @@ -36,3 +42,13 @@ obj # Styles Generated Code *.scss.ts + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/scelta-carriera/README.md b/README.md similarity index 100% rename from scelta-carriera/README.md rename to README.md diff --git a/common/package-lock.json b/common/package-lock.json new file mode 100644 index 0000000..5c4cb69 --- /dev/null +++ b/common/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "common", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "common", + "version": "0.0.1", + "license": "ISC" + } + } +} diff --git a/common/package.json b/common/package.json new file mode 100644 index 0000000..5fe35d6 --- /dev/null +++ b/common/package.json @@ -0,0 +1,9 @@ +{ + "name": "common", + "version": "0.0.1", + "description": "Common components to build elixForms custom pages", + "license": "ISC", + "author": "", + "type": "commonjs", + "main": "index.js" +} diff --git a/scelta-carriera/src/components/ElixFormsComponent.module.scss b/common/src/ElixFormsComponent.module.scss similarity index 100% rename from scelta-carriera/src/components/ElixFormsComponent.module.scss rename to common/src/ElixFormsComponent.module.scss diff --git a/scelta-carriera/src/components/ElixFormsComponent.tsx b/common/src/ElixFormsComponent.tsx similarity index 96% rename from scelta-carriera/src/components/ElixFormsComponent.tsx rename to common/src/ElixFormsComponent.tsx index 510271f..85df174 100644 --- a/scelta-carriera/src/components/ElixFormsComponent.tsx +++ b/common/src/ElixFormsComponent.tsx @@ -1,4 +1,4 @@ -import * as React from 'react'; +//import * as React from 'react'; import ElixFormsComponentAbstract from './ElixFormsComponentAbstract'; export default class ElixFormsComponent extends ElixFormsComponentAbstract { diff --git a/scelta-carriera/src/components/ElixFormsComponentAbstract.tsx b/common/src/ElixFormsComponentAbstract.tsx similarity index 69% rename from scelta-carriera/src/components/ElixFormsComponentAbstract.tsx rename to common/src/ElixFormsComponentAbstract.tsx index 39be596..1174c0a 100644 --- a/scelta-carriera/src/components/ElixFormsComponentAbstract.tsx +++ b/common/src/ElixFormsComponentAbstract.tsx @@ -1,12 +1,12 @@ import * as FluentUI from '@fluentui/react'; -import { IElixFormsComponentFormState } from './IElixFormsComponentFormState'; -import { IElixFormsComponentProperties } from './IElixFormsComponentProperties'; +import type { IElixFormsComponentFormState } from './IElixFormsComponentFormState'; +import type { IElixFormsComponentProperties } from './IElixFormsComponentProperties'; import { ElixFormsElement } from './ElixFormsElement'; import { QueryParamHelper } from './QueryParamHelper'; -import { Component, FormEvent, JSX } from 'react'; +import { Component, type FormEvent, type JSX, useState } from 'react'; import React from 'react'; -import { IElixFormsComponentCustomFormFieldFactory } from './IElixFormsComponentCustomFormFieldFactory'; -import { ElixFormsCheckboxOption, ElixFormsDropdownOption, ElixFormsRadioOption } from './ElixFormsTypes'; +import type { IElixFormsComponentCustomFormFieldFactory } from './IElixFormsComponentCustomFormFieldFactory'; +import type { ElixFormsCheckboxOption, ElixFormsDropdownOption, ElixFormsRadioOption } from './ElixFormsTypes'; export default abstract class ElixFormsComponentAbstract extends Component { constructor(props: IElixFormsComponentProperties) { @@ -15,6 +15,34 @@ export default abstract class ElixFormsComponentAbstract extends Component (event: any, valueOrOption: any) => { //ChangeEvent | SyntheticEvent + // let value: any = null; + // // Fluent UI Dropdown passes (event, option) + // if (valueOrOption && valueOrOption.key !== undefined) { + // value = valueOrOption.key; + // } + // // Fluent UI TextField passes (event, newValue) + // else if (typeof valueOrOption === "string") { + // value = valueOrOption; + // } + // // Fluent UI Checkbox passes (event, checked) + // else if (typeof valueOrOption === "boolean") { + // value = valueOrOption; + // } + // // Native HTML inputs + // else if (event?.target) { + // value = event.target.type === "checkbox" + // ? event.target.checked + // : event.target.value; + // } + // setFormData(prev => ({ + // ...prev, + // [name]: value + // })); + // console.log(`Input ${name} changed to ${value}. Current form data:`, JSON.stringify(formData)); + // }; } private checkboxValues = new Map(); @@ -62,8 +90,8 @@ export default abstract class ElixFormsComponentAbstract extends Component this.createBooleanInput(name, label, required), - createCheckboxInput: (name: string, label: string, options: Array, required: boolean = false) => - this.createCheckboxInput(name, label, options, required), + createCheckboxInput: (name: string, label: string, options: Array) => + this.createCheckboxInput(name, label, options), createDropdownInput: (name: string, label: string, options: Array, required: boolean = false) => this.createDropdownInput(name, label, options, required), createHiddenInput: (name: string) => @@ -109,7 +137,7 @@ export default abstract class ElixFormsComponentAbstract extends Component, required: boolean = false) : JSX.Element { + private createCheckboxInput(paramName: string, label: string, values: Array) : JSX.Element { const checkedValues = QueryParamHelper.getCheckedFromQuery(paramName); if (!this.checkboxValues.get(paramName)) { @@ -122,18 +150,21 @@ export default abstract class ElixFormsComponentAbstract extends Component { const id = `${paramName}_${entryIndex}`; checkboxes.push( - { + { const currentCheckboxValues = this.checkboxValues.get(paramName)!; - const checkboxIndex = currentCheckboxValues.indexOf(entryIndex) ?? -1; + const checkboxIndex = currentCheckboxValues.indexOf(entryIndex); if (checked && checkboxIndex === -1) { currentCheckboxValues.push(entryIndex); } else if (!checked && checkboxIndex !== -1) { currentCheckboxValues.splice(checkboxIndex, 1); } - this.setState({ formData: { ...this.state.formData, [paramName]: currentCheckboxValues.join(',').trim() ?? '' } }, () => - console.log(`Checkbox ${id} changed to ${checked}. Current values for ${paramName}: ${this.state.formData[paramName]}`)); - }} /> + this.state.formData[paramName] = currentCheckboxValues.join(',').trim() ?? ''; + //this.setState({ formData: { ...this.state.formData, [paramName]: currentCheckboxValues.join(',').trim() ?? '' } }, () => + console.log(`Checkbox ${id} changed to ${checked}. Current values for ${paramName}: ${this.state.formData[paramName]}`); + //); + }} + /> ); }); @@ -173,6 +204,12 @@ export default abstract class ElixFormsComponentAbstract extends Component { + const value = option?.value ?? ''; + this.setState({ formData: { ...this.state.formData, [paramName]: value } }, () => + console.log(`Radio ${option?.id} changed to ${value}. Current value for ${paramName}: ${this.state.formData[paramName]}`) + ); + }} /> ).render(); } @@ -203,6 +240,12 @@ export default abstract class ElixFormsComponentAbstract extends Component { + const value = option?.value ?? ''; + this.setState({ formData: { ...this.state.formData, [paramName]: value } }, () => + console.log(`Boolean ${option?.id} changed to ${value}. Current value for ${paramName}: ${this.state.formData[paramName]}`) + ); + }} /> ).render(); } @@ -211,7 +254,13 @@ export default abstract class ElixFormsComponentAbstract extends Component{label}, - + { + this.setState({ formData: { ...this.state.formData, [paramName]: value } }, () => + console.log(`TextArea ${paramName} changed to ${value}. Current value for ${paramName}: ${this.state.formData[paramName]}`) + ); + }} + /> ).render(); } @@ -219,7 +268,13 @@ export default abstract class ElixFormsComponentAbstract extends Component{label}, - + { + this.setState({ formData: { ...this.state.formData, [paramName]: value } }, () => + console.log(`TextInput ${paramName} changed to ${value}. Current value for ${paramName}: ${this.state.formData[paramName]}`) + ); + }} + /> ).render(); } @@ -232,7 +287,13 @@ export default abstract class ElixFormsComponentAbstract extends Component{label}, - + { + this.setState({ formData: { ...this.state.formData, [paramName]: value } }, () => + console.log(`NumberInput ${paramName} changed to ${value}. Current value for ${paramName}: ${this.state.formData[paramName]}`) + ); + }} + /> ).render(); } @@ -259,7 +320,12 @@ export default abstract class ElixFormsComponentAbstract extends Component + onChange={(event, value) => { + this.setState({ formData: { ...this.state.formData, [paramName]: value } }, () => + console.log(`Dropdown ${paramName} changed to ${value}. Current value for ${paramName}: ${this.state.formData[paramName]}`) + ); + }} + /> ).render(); } @@ -283,8 +349,7 @@ export default abstract class ElixFormsComponentAbstract extends Component().concat(...field.options.map((o: any) => [[o.value, o.label]])), - field.required ?? false); + new Array().concat(...field.options.map((o: any) => [[o.value, o.label, o.required ?? false]]))); case "number": return this.createNumberInput(field.key, field.label, field.required ?? false); diff --git a/scelta-carriera/src/components/ElixFormsElement.tsx b/common/src/ElixFormsElement.tsx similarity index 94% rename from scelta-carriera/src/components/ElixFormsElement.tsx rename to common/src/ElixFormsElement.tsx index bc7879d..4d2aa01 100644 --- a/scelta-carriera/src/components/ElixFormsElement.tsx +++ b/common/src/ElixFormsElement.tsx @@ -1,4 +1,4 @@ -import React, { JSX } from "react"; +import React, { type JSX } from "react"; // Class to encapsulate the label and input elements export class ElixFormsElement { diff --git a/scelta-carriera/src/components/ElixFormsTypes.tsx b/common/src/ElixFormsTypes.tsx similarity index 87% rename from scelta-carriera/src/components/ElixFormsTypes.tsx rename to common/src/ElixFormsTypes.tsx index 11f629a..93bb1bd 100644 --- a/scelta-carriera/src/components/ElixFormsTypes.tsx +++ b/common/src/ElixFormsTypes.tsx @@ -1,3 +1,3 @@ -export type ElixFormsCheckboxOption = { value: number, label: string }; +export type ElixFormsCheckboxOption = { value: number, label: string, required?: boolean }; export type ElixFormsDropdownOption = { value: number, label: string }; export type ElixFormsRadioOption = { value: number, label: string }; \ No newline at end of file diff --git a/scelta-carriera/src/components/IElixFormsComponentCustomFormFieldFactory.ts b/common/src/IElixFormsComponentCustomFormFieldFactory.ts similarity index 78% rename from scelta-carriera/src/components/IElixFormsComponentCustomFormFieldFactory.ts rename to common/src/IElixFormsComponentCustomFormFieldFactory.ts index 26aba2d..440ca49 100644 --- a/scelta-carriera/src/components/IElixFormsComponentCustomFormFieldFactory.ts +++ b/common/src/IElixFormsComponentCustomFormFieldFactory.ts @@ -1,13 +1,13 @@ -import { JSX } from "react"; -import { ElixFormsCheckboxOption, ElixFormsDropdownOption, ElixFormsRadioOption } from "./ElixFormsTypes"; +import type { JSX } from "react"; +import type { ElixFormsCheckboxOption, ElixFormsDropdownOption, ElixFormsRadioOption } from "./ElixFormsTypes"; export type IElixFormsComponentCustomFormFieldFactory = { createBooleanInput: (name: string, label: string, required?: boolean) => JSX.Element; - createCheckboxInput: (name: string, label: string, options: Array, required?: boolean) => JSX.Element; + createCheckboxInput: (name: string, label: string, options: Array) => JSX.Element; createDropdownInput: (name: string, label: string, options: Array, required?: boolean) => JSX.Element; createHiddenInput: (name: string) => JSX.Element; createNumberInput: (name: string, label: string, required?: boolean) => JSX.Element; createRadioInput: (name: string, label: string, options: Array, required?: boolean) => JSX.Element; createTextInput: (name: string, label: string, required?: boolean) => JSX.Element; createTextAreaInput: (name: string, label: string, required?: boolean) => JSX.Element; -}; +}; \ No newline at end of file diff --git a/scelta-carriera/src/components/IElixFormsComponentFormState.tsx b/common/src/IElixFormsComponentFormState.tsx similarity index 92% rename from scelta-carriera/src/components/IElixFormsComponentFormState.tsx rename to common/src/IElixFormsComponentFormState.tsx index 7a1c88b..8982a3c 100644 --- a/scelta-carriera/src/components/IElixFormsComponentFormState.tsx +++ b/common/src/IElixFormsComponentFormState.tsx @@ -1,4 +1,3 @@ - export interface IElixFormsComponentFormState { formData: { [key: string]: any; }; -} +} \ No newline at end of file diff --git a/scelta-carriera/src/components/IElixFormsComponentProperties.ts b/common/src/IElixFormsComponentProperties.ts similarity index 92% rename from scelta-carriera/src/components/IElixFormsComponentProperties.ts rename to common/src/IElixFormsComponentProperties.ts index 6749ccf..17be327 100644 --- a/scelta-carriera/src/components/IElixFormsComponentProperties.ts +++ b/common/src/IElixFormsComponentProperties.ts @@ -1,5 +1,5 @@ -import { JSX } from "react"; -import { IElixFormsComponentCustomFormFieldFactory } from "./IElixFormsComponentCustomFormFieldFactory"; +import type { JSX } from "react"; +import type { IElixFormsComponentCustomFormFieldFactory } from "./IElixFormsComponentCustomFormFieldFactory"; export interface IElixFormsComponentProperties { description: string; diff --git a/scelta-carriera/src/components/QueryParamHelper.tsx b/common/src/QueryParamHelper.tsx similarity index 100% rename from scelta-carriera/src/components/QueryParamHelper.tsx rename to common/src/QueryParamHelper.tsx diff --git a/common/tsconfig.json b/common/tsconfig.json new file mode 100644 index 0000000..421816c --- /dev/null +++ b/common/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "declarationMap": true, + "module": "ESNext", + "target": "ES2022", + "moduleResolution": "bundler", + "jsx": "react-jsx", + "isolatedModules": true, + "verbatimModuleSyntax": true, + "skipLibCheck": true, + }, + "include": [ + "**/*" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0ee2914 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,302 @@ +{ + "name": "elixforms-custom-pages", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@fluentui/react": "^8.125.6", + "react": "^19.2.7", + "react-dom": "^19.2.5" + } + }, + "node_modules/@fluentui/date-time-utilities": { + "version": "8.6.11", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.11.tgz", + "integrity": "sha512-zq49tveFzmzwgaJ73rVvxu9+rqhPBIAJSbevciIQnmvv6dlh2GzZcL14Zevk9QV+q6CWaF6yzvhT11E2TpAv8Q==", + "license": "MIT", + "dependencies": { + "@fluentui/set-version": "^8.2.24", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/dom-utilities": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.10.tgz", + "integrity": "sha512-6WDImiLqTOpkEtfUKSStcTDpzmJfL6ZammomcjawN9xH/8u8G3Hx72CIt2MNck9giw/oUlNLJFdWRAjeP3rmPQ==", + "license": "MIT", + "dependencies": { + "@fluentui/set-version": "^8.2.24", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/font-icons-mdl2": { + "version": "8.5.73", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.73.tgz", + "integrity": "sha512-pyR9OE8LJMEVDAUTaTu/rGXaMCsyRqpp5124DhBoFNf6q5kI660IgbzuQadCpyMBEQadYI5/GLkLN7b1Lgou9Q==", + "license": "MIT", + "dependencies": { + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.15.1", + "@fluentui/utilities": "^8.17.2", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/foundation-legacy": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.6.6.tgz", + "integrity": "sha512-PIcMLOymLvIunp9DrBHUT+dZqwyslKsIOPi+5g/fLU/ySzCg3fs6wQyWHxN3esI5FsSfWi+yCpp+6u5+N00kJQ==", + "license": "MIT", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.15.1", + "@fluentui/utilities": "^8.17.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@fluentui/keyboard-key": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.23.tgz", + "integrity": "sha512-9GXeyUqNJUdg5JiQUZeGPiKnRzMRi9YEUn1l9zq6X/imYdMhxHrxpVZS12129cBfgvPyxt9ceJpywSfmLWqlKA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/merge-styles": { + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.14.tgz", + "integrity": "sha512-vghuHFAfQgS9WLIIs4kgDOCh/DHd5vGIddP4/bzposhlAVLZR6wUBqldm9AuCdY88r5LyCRMavVJLV+Up3xdvA==", + "license": "MIT", + "dependencies": { + "@fluentui/set-version": "^8.2.24", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/react": { + "version": "8.125.6", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.125.6.tgz", + "integrity": "sha512-uvq0PdAL+Tznikek54zbS31JefTqcPaCkwjHjJz0t8NAC2ZFHozKnkApaQo2+sf0390K3k1ErGWr/+3Tvc6+JQ==", + "license": "MIT", + "dependencies": { + "@fluentui/date-time-utilities": "^8.6.11", + "@fluentui/font-icons-mdl2": "^8.5.73", + "@fluentui/foundation-legacy": "^8.6.6", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/react-focus": "^8.10.6", + "@fluentui/react-hooks": "^8.10.2", + "@fluentui/react-portal-compat-context": "^9.0.15", + "@fluentui/react-window-provider": "^2.3.2", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.15.1", + "@fluentui/theme": "^2.7.2", + "@fluentui/utilities": "^8.17.2", + "@microsoft/load-themed-styles": "^1.10.26", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "@types/react-dom": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0", + "react-dom": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@fluentui/react-focus": { + "version": "8.10.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.10.6.tgz", + "integrity": "sha512-hMQw7AETttfex3XEAB/XQalJSL8/RgzOdJrL1RPKcrxdkBal0C1MRQ43Bbmw/4WtI0vK0wI4+jHvCIlM0lkodA==", + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-key": "^0.4.23", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.15.1", + "@fluentui/utilities": "^8.17.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@fluentui/react-hooks": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.10.2.tgz", + "integrity": "sha512-HAd5cX50yKW/LljWlwt+FpSpdS/pNJutk9kMb7FyzxfoGBulL7sj6vX2HvxhSKyJMRKuTstXTdfJmsh22+3W3w==", + "license": "MIT", + "dependencies": { + "@fluentui/react-window-provider": "^2.3.2", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.17.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@fluentui/react-portal-compat-context": { + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal-compat-context/-/react-portal-compat-context-9.0.15.tgz", + "integrity": "sha512-DpV+qtFvM3dmH1j8ZD+YcM5vaTvmQPHUAx6tQnnmIoYJWs2R0wU/L5p2EajXy7zSg74jrDbDRxzaziamoOaJdg==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <20.0.0", + "react": ">=16.14.0 <20.0.0" + } + }, + "node_modules/@fluentui/react-window-provider": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.3.2.tgz", + "integrity": "sha512-T15zFPIWr9De8hNkapne7YyvcxclyTK2bMXXHZwbWLkVeH/lGHRG0CIy/calNGKa86wuzMJhq8iqFW2W6+EwVQ==", + "license": "MIT", + "dependencies": { + "@fluentui/set-version": "^8.2.24", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@fluentui/set-version": { + "version": "8.2.24", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.24.tgz", + "integrity": "sha512-8uNi2ThvNgF+6d3q2luFVVdk/wZV0AbRfJ85kkvf2+oSRY+f6QVK0w13vMorNhA5puumKcZniZoAfUF02w7NSg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/style-utilities": { + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.15.1.tgz", + "integrity": "sha512-EwjJE7P7XWViNIN+Klm4rFCaADujsfwHB4nzkYeD0zjMokrznsiAvqERxaGZMCRH7tO+DLKITt7kaoQstNLCVQ==", + "license": "MIT", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/theme": "^2.7.2", + "@fluentui/utilities": "^8.17.2", + "@microsoft/load-themed-styles": "^1.10.26", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/theme": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.7.2.tgz", + "integrity": "sha512-UXGNfGa/1bLmYrOpmHXdvyc7CzlNSKUQAADweTncbNoMF1DvscWEjPj5kxFgCmOU8wVtvvn4GraNNUSWtNxeeA==", + "license": "MIT", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.17.2", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@fluentui/utilities": { + "version": "8.17.2", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.17.2.tgz", + "integrity": "sha512-TmeWVtGN+Lk0mch7tuRcbkeMdrBwltI68fvQbPwcNLo4igFtTInMmjEnVJGa7pBQN5lQAmHYqB9IJI6RZU/t6w==", + "license": "MIT", + "dependencies": { + "@fluentui/dom-utilities": "^2.3.10", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/react-window-provider": "^2.3.2", + "@fluentui/set-version": "^8.2.24", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <20.0.0", + "react": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@microsoft/load-themed-styles": { + "version": "1.10.295", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.295.tgz", + "integrity": "sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT", + "peer": true + }, + "node_modules/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8409f7e --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "@fluentui/react": "^8.125.6", + "react": "^19.2.7", + "react-dom": "^19.2.5" + } +} diff --git a/scelta-carriera/.gitignore b/scelta-carriera/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/scelta-carriera/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/scelta-carriera/package-lock.json b/scelta-carriera/package-lock.json index 769e94a..86d5505 100644 --- a/scelta-carriera/package-lock.json +++ b/scelta-carriera/package-lock.json @@ -1,16 +1,13 @@ { - "name": "scelta-carriera", - "version": "0.0.0", + "name": "@elixforms/scelta-carriera", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "scelta-carriera", - "version": "0.0.0", + "name": "@elixforms/scelta-carriera", + "version": "0.0.1", "dependencies": { - "@fluentui/react": "^8.125.5", - "react": "^19.2.5", - "react-dom": "^19.2.5", "vite-plugin-css-injected-by-js": "^5.0.1" }, "devDependencies": { @@ -432,219 +429,6 @@ "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@fluentui/date-time-utilities": { - "version": "8.6.11", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.11.tgz", - "integrity": "sha512-zq49tveFzmzwgaJ73rVvxu9+rqhPBIAJSbevciIQnmvv6dlh2GzZcL14Zevk9QV+q6CWaF6yzvhT11E2TpAv8Q==", - "license": "MIT", - "dependencies": { - "@fluentui/set-version": "^8.2.24", - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/dom-utilities": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.10.tgz", - "integrity": "sha512-6WDImiLqTOpkEtfUKSStcTDpzmJfL6ZammomcjawN9xH/8u8G3Hx72CIt2MNck9giw/oUlNLJFdWRAjeP3rmPQ==", - "license": "MIT", - "dependencies": { - "@fluentui/set-version": "^8.2.24", - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.5.72", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.72.tgz", - "integrity": "sha512-RsdXbnu77uahoFu8GQMyLLeO5FyT+5AvtXhYjm662rs1NaEo89FcbJUjG9UZ2OkWPCNoGmhiFoOVPJwx0TQ6+g==", - "license": "MIT", - "dependencies": { - "@fluentui/set-version": "^8.2.24", - "@fluentui/style-utilities": "^8.15.0", - "@fluentui/utilities": "^8.17.2", - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/foundation-legacy": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.6.5.tgz", - "integrity": "sha512-ZI8idXy9LMbMS8ixmoUCBfzWUhZyhNp1L2IpX7Nr2MDrAqBbmZcmltCEUMFGpjevI0CDT0H2fRXpWlGbh31+4A==", - "license": "MIT", - "dependencies": { - "@fluentui/merge-styles": "^8.6.14", - "@fluentui/set-version": "^8.2.24", - "@fluentui/style-utilities": "^8.15.0", - "@fluentui/utilities": "^8.17.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0" - } - }, - "node_modules/@fluentui/keyboard-key": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.23.tgz", - "integrity": "sha512-9GXeyUqNJUdg5JiQUZeGPiKnRzMRi9YEUn1l9zq6X/imYdMhxHrxpVZS12129cBfgvPyxt9ceJpywSfmLWqlKA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/merge-styles": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.14.tgz", - "integrity": "sha512-vghuHFAfQgS9WLIIs4kgDOCh/DHd5vGIddP4/bzposhlAVLZR6wUBqldm9AuCdY88r5LyCRMavVJLV+Up3xdvA==", - "license": "MIT", - "dependencies": { - "@fluentui/set-version": "^8.2.24", - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/react": { - "version": "8.125.5", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.125.5.tgz", - "integrity": "sha512-7+tFsQuTlxlg16wSJpngbX+2I1ISa7AL6ip/a8GkLkKR6gcGlkIvK03ixE63fJTCeMHFTJNExcKbdWydAC5WDQ==", - "license": "MIT", - "dependencies": { - "@fluentui/date-time-utilities": "^8.6.11", - "@fluentui/font-icons-mdl2": "^8.5.72", - "@fluentui/foundation-legacy": "^8.6.5", - "@fluentui/merge-styles": "^8.6.14", - "@fluentui/react-focus": "^8.10.5", - "@fluentui/react-hooks": "^8.10.2", - "@fluentui/react-portal-compat-context": "^9.0.15", - "@fluentui/react-window-provider": "^2.3.2", - "@fluentui/set-version": "^8.2.24", - "@fluentui/style-utilities": "^8.15.0", - "@fluentui/theme": "^2.7.2", - "@fluentui/utilities": "^8.17.2", - "@microsoft/load-themed-styles": "^1.10.26", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "@types/react-dom": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0", - "react-dom": ">=16.8.0 <20.0.0" - } - }, - "node_modules/@fluentui/react-focus": { - "version": "8.10.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.10.5.tgz", - "integrity": "sha512-Jix/4i7ABjgj4a7Ac4JTAWxJkgytpwYTuSM7rtQEfRa4kSRy9E1Ak7NibFexm1kkUkBkFTnp9x1dE27rv+ECJQ==", - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-key": "^0.4.23", - "@fluentui/merge-styles": "^8.6.14", - "@fluentui/set-version": "^8.2.24", - "@fluentui/style-utilities": "^8.15.0", - "@fluentui/utilities": "^8.17.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0" - } - }, - "node_modules/@fluentui/react-hooks": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.10.2.tgz", - "integrity": "sha512-HAd5cX50yKW/LljWlwt+FpSpdS/pNJutk9kMb7FyzxfoGBulL7sj6vX2HvxhSKyJMRKuTstXTdfJmsh22+3W3w==", - "license": "MIT", - "dependencies": { - "@fluentui/react-window-provider": "^2.3.2", - "@fluentui/set-version": "^8.2.24", - "@fluentui/utilities": "^8.17.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0" - } - }, - "node_modules/@fluentui/react-portal-compat-context": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/@fluentui/react-portal-compat-context/-/react-portal-compat-context-9.0.15.tgz", - "integrity": "sha512-DpV+qtFvM3dmH1j8ZD+YcM5vaTvmQPHUAx6tQnnmIoYJWs2R0wU/L5p2EajXy7zSg74jrDbDRxzaziamoOaJdg==", - "license": "MIT", - "dependencies": { - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <20.0.0", - "react": ">=16.14.0 <20.0.0" - } - }, - "node_modules/@fluentui/react-window-provider": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.3.2.tgz", - "integrity": "sha512-T15zFPIWr9De8hNkapne7YyvcxclyTK2bMXXHZwbWLkVeH/lGHRG0CIy/calNGKa86wuzMJhq8iqFW2W6+EwVQ==", - "license": "MIT", - "dependencies": { - "@fluentui/set-version": "^8.2.24", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0" - } - }, - "node_modules/@fluentui/set-version": { - "version": "8.2.24", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.24.tgz", - "integrity": "sha512-8uNi2ThvNgF+6d3q2luFVVdk/wZV0AbRfJ85kkvf2+oSRY+f6QVK0w13vMorNhA5puumKcZniZoAfUF02w7NSg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/style-utilities": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.15.0.tgz", - "integrity": "sha512-g+hmc2z5iHMI1j4DqihYSws9ERzuT44mjfNGE1ywYqCB8MAzNzAPpyiosWOtI4cWZUQfnqzokpdSKkYF3quM8A==", - "license": "MIT", - "dependencies": { - "@fluentui/merge-styles": "^8.6.14", - "@fluentui/set-version": "^8.2.24", - "@fluentui/theme": "^2.7.2", - "@fluentui/utilities": "^8.17.2", - "@microsoft/load-themed-styles": "^1.10.26", - "tslib": "^2.1.0" - } - }, - "node_modules/@fluentui/theme": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.7.2.tgz", - "integrity": "sha512-UXGNfGa/1bLmYrOpmHXdvyc7CzlNSKUQAADweTncbNoMF1DvscWEjPj5kxFgCmOU8wVtvvn4GraNNUSWtNxeeA==", - "license": "MIT", - "dependencies": { - "@fluentui/merge-styles": "^8.6.14", - "@fluentui/set-version": "^8.2.24", - "@fluentui/utilities": "^8.17.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0" - } - }, - "node_modules/@fluentui/utilities": { - "version": "8.17.2", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.17.2.tgz", - "integrity": "sha512-TmeWVtGN+Lk0mch7tuRcbkeMdrBwltI68fvQbPwcNLo4igFtTInMmjEnVJGa7pBQN5lQAmHYqB9IJI6RZU/t6w==", - "license": "MIT", - "dependencies": { - "@fluentui/dom-utilities": "^2.3.10", - "@fluentui/merge-styles": "^8.6.14", - "@fluentui/react-window-provider": "^2.3.2", - "@fluentui/set-version": "^8.2.24", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <20.0.0", - "react": ">=16.8.0 <20.0.0" - } - }, "node_modules/@humanfs/core": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", @@ -761,12 +545,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@microsoft/load-themed-styles": { - "version": "1.10.295", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.295.tgz", - "integrity": "sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg==", - "license": "MIT" - }, "node_modules/@napi-rs/wasm-runtime": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", @@ -1339,15 +1117,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@swc/helpers": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", - "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", @@ -1383,6 +1152,7 @@ "version": "19.2.14", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -1392,6 +1162,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.2.0" @@ -1603,6 +1374,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, "license": "MIT" }, "node_modules/debug": { @@ -2625,27 +2397,6 @@ "node": ">=6" } }, - "node_modules/react": { - "version": "19.2.5", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", - "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.2.5", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", - "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.5" - } - }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -3060,12 +2811,6 @@ "node": ">=14.0.0" } }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" - }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -3167,6 +2912,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "devOptional": true, "license": "0BSD" }, "node_modules/type-check": { diff --git a/scelta-carriera/package.json b/scelta-carriera/package.json index aea16c7..915c06b 100644 --- a/scelta-carriera/package.json +++ b/scelta-carriera/package.json @@ -1,5 +1,5 @@ { - "name": "scelta-carriera", + "name": "@elixforms/scelta-carriera", "private": true, "version": "0.0.1", "type": "module", @@ -10,9 +10,6 @@ "preview": "vite preview" }, "dependencies": { - "@fluentui/react": "^8.125.5", - "react": "^19.2.5", - "react-dom": "^19.2.5", "vite-plugin-css-injected-by-js": "^5.0.1" }, "devDependencies": { diff --git a/scelta-carriera/src/App.jsx b/scelta-carriera/src/App.jsx index 766979f..13b9c78 100644 --- a/scelta-carriera/src/App.jsx +++ b/scelta-carriera/src/App.jsx @@ -1,20 +1,20 @@ import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from './assets/vite.svg' +// import reactLogo from './assets/react.svg' +// import viteLogo from './assets/vite.svg' import heroImg from './assets/hero.png' import './App.css' -import * as ElixForms from './components/ElixFormsComponent'; +import * as ElixForms from '@common/src/ElixFormsComponent'; function App() { const [count, setCount] = useState(0) - /** @type {import('./components/ElixFormsComponent').ElixFormsComponent} */ - var myElixFormsReact = new ElixForms.ElixFormsReact(); - - myElixFormsReact.props = { + /** @type {import('@common/src/ElixFormsComponent').ElixFormsReact} */ + var myElixFormsReact = new ElixForms.ElixFormsReact({ description: "This is a custom form created with ElixFormsReact component.", isDarkTheme: false, environmentMessage: "TESTING!", + hasTeamsContext: false, + userDisplayName: "John Doe", /* additionalFieldsJson: JSON.stringify([ { @@ -85,20 +85,51 @@ function App() { ]), */ customFormFieldsConfiguration: ( - /** @type {import('./components/IElixFormsComponentCustomFormFieldFactory').IElixFormsComponentCustomFormFieldFactory} */ - formFieldFactory - ) => ( - <> - {formFieldFactory.createTextInput("name", "Name", true)} - {formFieldFactory.createTextAreaInput("description", "Description")} - {formFieldFactory.createNumberInput("number", "Number")} - {formFieldFactory.createBooleanInput("boolean", "Boolean")} - {formFieldFactory.createRadioInput("radio", "Radio", [{ "value": 1, "label": "Opzione 1" }, { "value": 2, "label": "Opzione 2" }, { "value": 3, "label": "Altra opzione" }])} - {formFieldFactory.createDropdownInput("dropdown", "Dropdown", [{ "value": 0, "label": "Not applicable" }, { "value": 1, "label": "Goal 1: No poverty" }, { "value": 2, "label": "Goal 2: Zero hunger" }, { "value": 3, "label": "Goal 3: Good health and well-being" }])} - {formFieldFactory.createCheckboxInput("checkbox", "Checkbox", [{ "value": 0, "label": "Check 1" }, { "value": 1, "label": "Check 2" }, { "value": 2, "label": "Check 3" }])} - - ) - }; + /** @type {import('../../common/src/IElixFormsComponentCustomFormFieldFactory').IElixFormsComponentCustomFormFieldFactory} */ + formFieldFactory) => ( + <> + {/* {formFieldFactory.createTextInput("required", "Campo Required", true)} + {formFieldFactory.createNumberInput("number", "Number")} + {formFieldFactory.createBooleanInput("boolean", "Boolean")} + {formFieldFactory.createRadioInput("radio", "Radio", [{ "value": 1, "label": "Opzione 1" }, { "value": 2, "label": "Opzione 2" }, { "value": 3, "label": "Altra opzione" }])} + {formFieldFactory.createDropdownInput("dropdown", "Dropdown", [{ "value": 0, "label": "Not applicable" }, { "value": 1, "label": "Goal 1: No poverty" }, { "value": 2, "label": "Goal 2: Zero hunger" }, { "value": 3, "label": "Goal 3: Good health and well-being" }])} + {formFieldFactory.createCheckboxInput("checkbox", "Checkbox", [{ "value": 0, "label": "Check 1" }, { "value": 1, "label": "Check 2" }, { "value": 2, "label": "Check 3" }])} */} + {formFieldFactory.createDropdownInput("COL0015", "COL0015 Goals", [ + { "value": 0, "label": "Not applicable" }, + { "value": 1, "label": "Goal 1: No poverty" }, + { "value": 2, "label": "Goal 2: Zero hunger" }, + { "value": 3, "label": "Goal 3: Good health and well-being" }, + { "value": 4, "label": "Goal 4: Quality education" }, + { "value": 5, "label": "Goal 5: Gender equality" }, + { "value": 6, "label": "Goal 6: Clean water and sanitation" }, + { "value": 7, "label": "Goal 7: Affordable and clean energy" }, + { "value": 8, "label": "Goal 8: Decent work and economic growth" }, + { "value": 9, "label": "Goal 9: Industry, Innovation, and Infrastructure" }, + { "value": 10, "label": "Goal 10: Reduced inequalities" }, + { "value": 11, "label": "Goal 11: Sustainable cities and communities" }, + { "value": 12, "label": "Goal 12: Responsible consumption and production" }, + { "value": 13, "label": "Goal 13: Climate action" }, + { "value": 14, "label": "Goal 14: Life below water" }, + { "value": 15, "label": "Goal 15: Life on land" }, + { "value": 16, "label": "Goal 16: Peace, justice and strong institutions" }, + { "value": 17, "label": "Goal 17: Partnerships for the goals" } + ], true)} + {formFieldFactory.createTextInput("COL0002", "Campo STRING", true)} + {formFieldFactory.createTextAreaInput("COL0003", "Campo TEXTAREA", true)} + {formFieldFactory.createBooleanInput("COL0004", "Campo BOOLEAN", true)} + {formFieldFactory.createRadioInput("COL0005", "Campo RADIO", [ + { "value": 1, "label": "Opzione 1" }, + { "value": 2, "label": "Opzione 2" }, + { "value": 3, "label": "Altra opzione" } + ], true)} + {formFieldFactory.createCheckboxInput("COL0006", "Campo CHECKBOX", [ + { "value": 4, "label": "Check 1" }, + { "value": 5, "label": "Check 2" }, + { "value": 6, "label": "Altro check" } + ])} + + ) + }); var elixFormsReactRender = myElixFormsReact.render(); diff --git a/scelta-carriera/src/global.d.ts b/scelta-carriera/src/global.d.ts new file mode 100644 index 0000000..80a03e3 --- /dev/null +++ b/scelta-carriera/src/global.d.ts @@ -0,0 +1,3 @@ +declare module "*.css"; +declare module "*.svg"; +declare module "*.png"; \ No newline at end of file diff --git a/scelta-carriera/src/main.jsx b/scelta-carriera/src/main.jsx index b9a1a6d..2cfe6d7 100644 --- a/scelta-carriera/src/main.jsx +++ b/scelta-carriera/src/main.jsx @@ -3,7 +3,10 @@ import { createRoot } from 'react-dom/client' import './index.css' import App from './App.jsx' -createRoot(document.getElementById('root')).render( +const rootElement = document.getElementById('root') +if (!rootElement) throw new Error('Root element not found') + +createRoot(rootElement).render( , diff --git a/scelta-carriera/tsconfig.json b/scelta-carriera/tsconfig.json new file mode 100644 index 0000000..a20100b --- /dev/null +++ b/scelta-carriera/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.base.json", + "references": [ + { + "path": "../common" + } + ], + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "allowJs": true, + "checkJs": true, + //"jsx": "react-jsx" + }, + "include": [ + "src/**/*" + ], +} \ No newline at end of file diff --git a/scelta-carriera/vite.config.js b/scelta-carriera/vite.config.js index ecec6c1..f2355b4 100644 --- a/scelta-carriera/vite.config.js +++ b/scelta-carriera/vite.config.js @@ -1,6 +1,7 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'; +import path from "path"; // https://vite.dev/config/ export default defineConfig({ @@ -18,8 +19,22 @@ export default defineConfig({ manualChunks: undefined, // disabilita la creazione di chunk multipli entryFileNames: 'scelta-carriera.js', // nome del file finale assetFileNames: '[name].[ext]' // evita hash nei nomi - } + }, }, sourcemap: true, }, + resolve: { + alias: { + "@common": path.resolve(__dirname, "../common"), + // "react": path.resolve(__dirname, "node_modules/react"), + // "react-dom": path.resolve(__dirname, "node_modules/react-dom") + } + }, + server: { + fs: { + allow: [ + ".." // permette import fuori dalla cartella del progetto + ] + } + } }) diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..6b8f9a6 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,25 @@ +{ + //"files": [], + "references": [ + { + "path": "./common" + } + ], + "compilerOptions": { + "module": "ESNext", + "target": "ES2022", + "moduleResolution": "bundler", + "strict": true, + "jsx": "react-jsx", + "paths": { + "@common/*": [ + "./common/*" + ] + }, + "isolatedModules": true, + "verbatimModuleSyntax": true, + "resolvePackageJsonExports": true, + "resolvePackageJsonImports": true + // + } +} \ No newline at end of file