@randstad-uca/design-system 1.0.59 → 1.0.60

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.
@@ -11,6 +11,7 @@ export declare class DatePickerComponent extends BaseControl {
11
11
  private viewDate;
12
12
  private isMobile;
13
13
  private calendarWidth;
14
+ private inputValue;
14
15
  private inputContainer;
15
16
  static styles: import("lit").CSSResult;
16
17
  private setMessageErrorFormatInvalid;
@@ -32,7 +33,7 @@ export declare class DatePickerComponent extends BaseControl {
32
33
  /**
33
34
  * Ciclo de vida: se llama después de cada actualización.
34
35
  * Se usa para recalcular el ancho si la apertura del calendario ha cambiado.
35
-
36
+
36
37
  * @param changedProperties - Mapa de propiedades que han cambiado.
37
38
  */
38
39
  updated(changedProperties: Map<string, any>): void;
@@ -48,7 +49,7 @@ export declare class DatePickerComponent extends BaseControl {
48
49
  /**
49
50
  * Maneja el evento de entrada del usuario en el input.
50
51
  * Valida el formato de la fecha y actualiza el estado del componente.
51
-
52
+
52
53
  * @param e - Objeto de evento de entrada.
53
54
  */
54
55
  handleInput(e: Event): void;
@@ -61,7 +62,7 @@ export declare class DatePickerComponent extends BaseControl {
61
62
  private handleClickOutside;
62
63
  /**
63
64
  * Abre o cierra el calendario al hacer clic en el botón de calendario.
64
-
65
+
65
66
  * @param e - Objeto de evento del clic.
66
67
  */
67
68
  handleCalendarButtonClick(e: Event): void;
@@ -75,14 +76,14 @@ export declare class DatePickerComponent extends BaseControl {
75
76
  private handleDateSelect;
76
77
  /**
77
78
  * Maneja el cambio de la fecha de vista en el calendario.
78
-
79
+
79
80
  * @param e - Objeto de evento con la nueva fecha de vista.
80
81
  */
81
82
  private handleViewDateChange;
82
83
  /**
83
84
  * Cierra el calendario y actualiza el valor del componente.
84
85
  * Emite un evento 'date-selected' con el valor de la fecha seleccionada.
85
-
86
+
86
87
  * @param valueSet - La fecha en formato de cadena (ej: 'dd-MM-yyyy') a establecer.
87
88
  */
88
89
  private closeOverlay;
@@ -90,7 +91,7 @@ export declare class DatePickerComponent extends BaseControl {
90
91
  * Analiza la propiedad 'value' externa y actualiza el estado interno del componente.
91
92
  * Se ejecuta cuando una propiedad cambia desde fuera (p. ej., Storybook, componente padre).
92
93
  * No emite eventos ni interactúa con el DOM para evitar bucles de renderizado.
93
-
94
+
94
95
  * @param value La cadena de fecha pasada desde una propiedad externa.
95
96
  */
96
97
  private _syncValue;
@@ -104,11 +105,11 @@ export declare class DatePickerComponent extends BaseControl {
104
105
  private _validateDate;
105
106
  /**
106
107
  * Valida la entrada del usuario en el campo de texto.
107
-
108
+
108
109
  * Este método se llama con cada pulsación de tecla o cambio en el input.
109
110
  * Se encarga de validar el formato, verificar si la fecha está dentro de los límites
110
111
  * y de actualizar el estado de error y el valor del input.
111
-
112
+
112
113
  * @param value La cadena de fecha que el usuario ha introducido.
113
114
  * @param fromInput Indica si la llamada proviene directamente de la interacción del usuario.
114
115
  */
@@ -117,7 +118,7 @@ export declare class DatePickerComponent extends BaseControl {
117
118
  * Intenta analizar una cadena de fecha en múltiples formatos.
118
119
  * Este método es la fuente de la verdad para el análisis de fechas.
119
120
  * Soporta los formatos 'dd-MM-yyyy' y 'yyyy-MM-dd', retornando un objeto Date.
120
-
121
+
121
122
  * @param dateString La cadena de fecha a analizar.
122
123
  * @returns Un objeto Date si es válido, de lo contrario, null.
123
124
  */
@@ -125,24 +126,24 @@ export declare class DatePickerComponent extends BaseControl {
125
126
  /**
126
127
  * Analiza una cadena de fecha con formato 'yyyy-MM-dd'.
127
128
  * Este método auxiliar ayuda a procesar la propiedad minDate y maxDate.
128
-
129
+
129
130
  * @param dateString La cadena de fecha en formato 'yyyy-MM-dd'.
130
-
131
+
131
132
  * @returns Un objeto Date si es válido, de lo contrario, null.
132
133
  */
133
134
  private _parseDateString;
134
135
  /**
135
136
  * Retorna el rango de fechas válido del componente.
136
137
  * Analiza las propiedades 'minDate' y 'maxDate' para determinar el rango permitido.
137
-
138
+
138
139
  * @returns Un objeto con las fechas mínima y máxima, o null si no se define un rango.
139
140
  */
140
141
  private _getValidDateRange;
141
142
  /**
142
143
  * Verifica si una fecha dada está dentro del rango permitido.
143
-
144
+
144
145
  * @param date La fecha a verificar.
145
-
146
+
146
147
  * @returns Verdadero si la fecha está dentro de los límites, de lo contrario, falso.
147
148
  */
148
149
  private _isWithinBounds;
package/dist/index.js CHANGED
@@ -3300,7 +3300,7 @@ const Yt=o`@layer{:host{display:inline-flex;height:var(--md-radio-icon-size, 20p
3300
3300
  <div class="calendar-container" style="width: ${this.calendarWidth}px;">
3301
3301
  ${i}
3302
3302
  </div>
3303
- `}};a([A({type:Object}),s("design:type",Object)],si.prototype,"selectedDate",void 0),a([A({type:Object}),s("design:type",Date)],si.prototype,"viewDate",void 0),a([A({type:Boolean}),s("design:type",Object)],si.prototype,"isMobile",void 0),a([A({type:Number}),s("design:type",Number)],si.prototype,"calendarWidth",void 0),a([A({type:Object}),s("design:type",Object)],si.prototype,"minDate",void 0),a([A({type:Object}),s("design:type",Object)],si.prototype,"maxDate",void 0),a([T(),s("design:type",String)],si.prototype,"currentView",void 0),si=a([d("calendar-overlay")],si);let di=class extends L{constructor(){super(...arguments),this.isRenderClearButton=!0,this.eighteenOrOlder=!1,this.isOpen=!1,this.selectedDate=null,this.viewDate=new Date,this.isMobile=!1,this.calendarWidth=0,this.updateResponsiveModeBound=this.updateResponsiveMode.bind(this),this.handleClickOutside=t=>{t.composedPath().includes(this)||(this.isOpen=!1)}}static{this.styles=o`
3303
+ `}};a([A({type:Object}),s("design:type",Object)],si.prototype,"selectedDate",void 0),a([A({type:Object}),s("design:type",Date)],si.prototype,"viewDate",void 0),a([A({type:Boolean}),s("design:type",Object)],si.prototype,"isMobile",void 0),a([A({type:Number}),s("design:type",Number)],si.prototype,"calendarWidth",void 0),a([A({type:Object}),s("design:type",Object)],si.prototype,"minDate",void 0),a([A({type:Object}),s("design:type",Object)],si.prototype,"maxDate",void 0),a([T(),s("design:type",String)],si.prototype,"currentView",void 0),si=a([d("calendar-overlay")],si);let di=class extends L{constructor(){super(...arguments),this.isRenderClearButton=!0,this.eighteenOrOlder=!1,this.isOpen=!1,this.selectedDate=null,this.viewDate=new Date,this.isMobile=!1,this.calendarWidth=0,this.inputValue=null,this.updateResponsiveModeBound=this.updateResponsiveMode.bind(this),this.handleClickOutside=t=>{t.composedPath().includes(this)||(this.isOpen=!1)}}static{this.styles=o`
3304
3304
  ${X}
3305
3305
  ${Q}
3306
3306
  ${K}
@@ -3401,19 +3401,19 @@ const Yt=o`@layer{:host{display:inline-flex;height:var(--md-radio-icon-size, 20p
3401
3401
  .calendar-button randstad-icon {
3402
3402
  font-size: 18px;
3403
3403
  }
3404
- `}setMessageErrorFormatInvalid(){return"formato de fecha inválido, se esperaba 'dd-MM-yyyy'"}connectedCallback(){super.connectedCallback(),this.updateResponsiveMode(),window.addEventListener("resize",this.updateResponsiveModeBound),document.addEventListener("click",this.handleClickOutside)}disconnectedCallback(){window.removeEventListener("resize",this.updateResponsiveModeBound),document.removeEventListener("click",this.handleClickOutside),super.disconnectedCallback()}firstUpdated(){this.setInitialWidth()}updated(t){t.has("value")&&this._syncValue(this.value),(t.has("isOpen")||t.has("value"))&&this.setInitialWidth(),super.updated(t)}setInitialWidth(){this.inputContainer&&(this.calendarWidth=this.inputContainer.getBoundingClientRect().width)}updateResponsiveMode(){this.isMobile=window.innerWidth<=940,this.setInitialWidth()}handleInput(t){const e=t.target;this._parseAndValidateDate(e.value,!0)}handleCalendarButtonClick(t){this.disabled||(t.stopPropagation(),this.isOpen=!this.isOpen,this.selectedDate?this.viewDate=this.selectedDate:this.viewDate=new Date,this.requestUpdate())}handleClearDate(){this.selectedDate=null,this.error=!1,this.errorMessage=null,this.closeOverlay(null)}handleDateSelect(t){const e=t.detail.date;e&&(this.selectedDate=e,this.viewDate=e,this.closeOverlay(Je(e,"dd-MM-yyyy")))}handleViewDateChange(t){this.viewDate=t.detail.date}closeOverlay(t){this.value=t,this.dispatchEvent(new CustomEvent("date-selected",{detail:{value:t}})),this.isOpen=!1}_syncValue(t){if(""===t||null===t)return void(this.error||(this.selectedDate=null,this.errorMessage=null));const e=this._parseDate(t);e&&this._validateDate(e)?(this.selectedDate=e,this.viewDate=e,this.error=!1,this.errorMessage=null,this.value=Je(e,"dd-MM-yyyy")):this.selectedDate=e}_validateDate(t){if(!t)return!1;if(this.error=!1,this.errorMessage=null,this.eighteenOrOlder){const e=function(t,e,i){return be(t,-18,i)}(new Date);if(ii(t,e))return this.error=!0,this.errorMessage="tenés que ser mayor de 18 años",!1}if(!this._isWithinBounds(t)){this.error=!0;const t=this._getValidDateRange();return this.errorMessage=`la fecha debe estar entre ${t?.minDate?Je(t.minDate,"dd-MM-yyyy"):""} y ${t?.maxDate?Je(t.maxDate,"dd-MM-yyyy"):""}.`,!1}return!0}_parseAndValidateDate(t,e){if(this.disabled)return;if(""===t||null===t)return this.selectedDate=null,this.error=!1,this.errorMessage=null,void(e&&this.closeOverlay(null));const i=this._parseDate(t);i?this._validateDate(i)?(this.selectedDate=i,this.viewDate=i,this.error=!1,this.errorMessage=null,e&&this.closeOverlay(Je(i,"dd-MM-yyyy"))):(e&&this.closeOverlay(null),console.error("La fecha es inválida.")):(this.error=!0,this.errorMessage=this.setMessageErrorFormatInvalid(),e&&this.closeOverlay(null),console.error("Formato de fecha no válido."))}_parseDate(t){const e=t.split("-").map(Number);if(3===e.length){const[i,o,r]=e;if(i&&o&&r&&o>=1&&o<=12&&r>1e3){const e=new Date(r,o-1,i,12);if(me(e)&&Je(e,"dd-MM-yyyy")===t)return e}}const i=t.split("-").map(Number);if(3===i.length){const[e,o,r]=i;if(e&&o&&r&&o>=1&&o<=12&&e>1e3){const i=new Date(e,o-1,r,12);if(me(i)&&Je(i,"yyyy-MM-dd")===t)return i}}return null}_parseDateString(t){if(!t)return null;const e=t.split("-").map(Number);if(3===e.length&&!isNaN(e[0])&&!isNaN(e[1])&&!isNaN(e[2])){return new Date(e[0],e[1]-1,e[2],12)}return null}_getValidDateRange(){const t=this._parseDateString(this.minDate),e=this._parseDateString(this.maxDate);return t||e?t&&e&&ii(t,e)?null:{minDate:t,maxDate:e}:{minDate:null,maxDate:null}}_isWithinBounds(t){const e=this._getValidDateRange();return!e||(!e.minDate||!oi(t,e.minDate))&&(!e.maxDate||!ii(t,e.maxDate))}render(){const t=n({"input-wrapper":!0,active:this.isOpen,error:this.error,disabled:this.disabled}),o=`width: ${this.width||"100%"};`,r=this._getValidDateRange();return e`
3404
+ `}setMessageErrorFormatInvalid(){return"formato de fecha inválido, se esperaba 'dd-MM-yyyy'"}connectedCallback(){super.connectedCallback(),this.updateResponsiveMode(),window.addEventListener("resize",this.updateResponsiveModeBound),document.addEventListener("click",this.handleClickOutside)}disconnectedCallback(){window.removeEventListener("resize",this.updateResponsiveModeBound),document.removeEventListener("click",this.handleClickOutside),super.disconnectedCallback()}firstUpdated(){this.setInitialWidth()}updated(t){t.has("value")&&this._syncValue(this.value),(t.has("isOpen")||t.has("value"))&&this.setInitialWidth(),super.updated(t)}setInitialWidth(){this.inputContainer&&(this.calendarWidth=this.inputContainer.getBoundingClientRect().width)}updateResponsiveMode(){this.isMobile=window.innerWidth<=940,this.setInitialWidth()}handleInput(t){const e=t.target;this.inputValue=e.value,this._parseAndValidateDate(e.value,!0)}handleCalendarButtonClick(t){this.disabled||(t.stopPropagation(),this.isOpen=!this.isOpen,this.selectedDate?this.viewDate=this.selectedDate:this.viewDate=new Date,this.requestUpdate())}handleClearDate(){this.inputValue=null,this.selectedDate=null,this.error=!1,this.errorMessage=null,this.closeOverlay(null)}handleDateSelect(t){const e=t.detail.date;if(!e)return;if(this._validateDate(e)){this.selectedDate=e,this.viewDate=e;const t=Je(e,"dd-MM-yyyy");this.inputValue=t,this.closeOverlay(t)}else{const t=Je(e,"dd-MM-yyyy");this.inputValue=t,this.selectedDate=null,this.closeOverlay(null)}}handleViewDateChange(t){this.viewDate=t.detail.date}closeOverlay(t){this.value=t,this.dispatchEvent(new CustomEvent("date-selected",{detail:{value:t}})),this.isOpen=!1}_syncValue(t){if(""===t||null===t)return void(this.error||(this.selectedDate=null,this.inputValue=null,this.errorMessage=null));const e=this._parseDate(t);e&&this._validateDate(e)?(this.selectedDate=e,this.viewDate=e,this.error=!1,this.errorMessage=null,this.value=Je(e,"dd-MM-yyyy"),this.inputValue=this.value):this.selectedDate=e}_validateDate(t){if(!t)return!1;if(this.error=!1,this.errorMessage=null,this.eighteenOrOlder){const e=function(t,e,i){return be(t,-18,i)}(new Date);if(ii(t,e))return this.error=!0,this.errorMessage="tenés que ser mayor de 18 años",!1}if(!this._isWithinBounds(t)){const t=this._getValidDateRange();return this.error=!0,this.errorMessage=`la fecha debe estar entre ${t?.minDate?Je(t.minDate,"dd-MM-yyyy"):""} y ${t?.maxDate?Je(t.maxDate,"dd-MM-yyyy"):""}.`,!1}return!0}_parseAndValidateDate(t,e){if(this.disabled)return;if(""===t||null===t)return this.selectedDate=null,this.error=!1,this.errorMessage=null,void(e&&this.closeOverlay(null));const i=this._parseDate(t);if(i){this._validateDate(i)?(this.selectedDate=i,this.viewDate=i,this.error=!1,this.errorMessage=null,e&&this.closeOverlay(Je(i,"dd-MM-yyyy"))):(this.error=!0,this.selectedDate=null,e&&this.closeOverlay(null))}else this.error=!0,this.errorMessage=this.setMessageErrorFormatInvalid(),this.selectedDate=null,e&&this.closeOverlay(null)}_parseDate(t){const e=t.split("-").map(Number);if(3===e.length){const[i,o,r]=e;if(i&&o&&r&&o>=1&&o<=12&&r>1e3){const e=new Date(r,o-1,i,12);if(me(e)&&Je(e,"dd-MM-yyyy")===t)return e}}const i=t.split("-").map(Number);if(3===i.length){const[e,o,r]=i;if(e&&o&&r&&o>=1&&o<=12&&e>1e3){const i=new Date(e,o-1,r,12);if(me(i)&&Je(i,"yyyy-MM-dd")===t)return i}}return null}_parseDateString(t){if(!t)return null;const e=t.split("-").map(Number);if(3===e.length&&!isNaN(e[0])&&!isNaN(e[1])&&!isNaN(e[2])){return new Date(e[0],e[1]-1,e[2],12)}return null}_getValidDateRange(){const t=this._parseDateString(this.minDate),e=this._parseDateString(this.maxDate);return t||e?t&&e&&ii(t,e)?null:{minDate:t,maxDate:e}:{minDate:null,maxDate:null}}_isWithinBounds(t){const e=this._getValidDateRange();return!e||(!e.minDate||!oi(t,e.minDate))&&(!e.maxDate||!ii(t,e.maxDate))}render(){const t=n({"input-wrapper":!0,active:this.isOpen,error:this.error,disabled:this.disabled}),o=`width: ${this.width||"100%"};`,r=this._getValidDateRange();return e`
3405
3405
  <div class="datepicker-container" style="${this.labelColor?` --label-color: ${this.labelColor}`:""} ${o}">
3406
3406
  ${this.renderLabelContainer()}
3407
3407
 
3408
3408
  <div class="input-container">
3409
3409
  <div class="${t}" style="width: 100%">
3410
3410
  <input
3411
- type="text"
3412
- class="date-input"
3413
- .value="${this.value}"
3414
- placeholder="${this.placeholder}"
3415
- ?disabled=${this.disabled}
3416
- @input=${this.handleInput}
3411
+ type="text"
3412
+ class="date-input"
3413
+ .value="${this.inputValue??""}"
3414
+ placeholder="${this.placeholder}"
3415
+ ?disabled=${this.disabled}
3416
+ @input=${this.handleInput}
3417
3417
  />
3418
3418
 
3419
3419
  ${this.isRenderClearButton&&this.selectedDate&&!this.disabled?e`
@@ -3439,21 +3439,21 @@ const Yt=o`@layer{:host{display:inline-flex;height:var(--md-radio-icon-size, 20p
3439
3439
  .selectedDate=${this.selectedDate}
3440
3440
  .viewDate=${this.viewDate}
3441
3441
  .calendarWidth=${this.calendarWidth}
3442
- .minDate=${r?.minDate}
3443
- .maxDate=${r?.maxDate}
3442
+ .minDate=${r?.minDate}
3443
+ .maxDate=${r?.maxDate}
3444
3444
  @close=${()=>this.isOpen=!1}
3445
3445
  @view-date-change=${this.handleViewDateChange}
3446
3446
  @date-selected=${this.handleDateSelect}
3447
3447
  >
3448
3448
  </calendar-overlay>
3449
3449
  `:i}
3450
-
3450
+
3451
3451
  ${this.renderError()}
3452
3452
  </div>
3453
3453
 
3454
3454
  ${this.renderHelper()}
3455
3455
  </div>
3456
- `}};a([A({type:String}),s("design:type",String)],di.prototype,"width",void 0),a([A({type:Boolean}),s("design:type",Object)],di.prototype,"isRenderClearButton",void 0),a([A({type:String}),s("design:type",String)],di.prototype,"minDate",void 0),a([A({type:String}),s("design:type",String)],di.prototype,"maxDate",void 0),a([A({type:Boolean}),s("design:type",Object)],di.prototype,"eighteenOrOlder",void 0),a([T(),s("design:type",Object)],di.prototype,"isOpen",void 0),a([T(),s("design:type",Object)],di.prototype,"selectedDate",void 0),a([T(),s("design:type",Date)],di.prototype,"viewDate",void 0),a([T(),s("design:type",Object)],di.prototype,"isMobile",void 0),a([T(),s("design:type",Number)],di.prototype,"calendarWidth",void 0),a([z(".input-container"),s("design:type",HTMLDivElement)],di.prototype,"inputContainer",void 0),di=a([d("datepicker-component")],di);const li={"application/pdf":"PDF","application/msword":"Word (.doc)","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word (.docx)","image/jpeg":"JPEG","image/png":"PNG","text/plain":"Texto (.txt)"};let ci=class extends L{constructor(){super(...arguments),this.files=[],this.maxFiles=1,this.acceptedFileTypes=[],this.maxFileSize=5242880,this.buttonText="Agregar archivo",this.simulatedDelay=0,this.loading=!1,this.progress=0}static{this.styles=o`
3456
+ `}};a([A({type:String}),s("design:type",String)],di.prototype,"width",void 0),a([A({type:Boolean}),s("design:type",Object)],di.prototype,"isRenderClearButton",void 0),a([A({type:String}),s("design:type",String)],di.prototype,"minDate",void 0),a([A({type:String}),s("design:type",String)],di.prototype,"maxDate",void 0),a([A({type:Boolean}),s("design:type",Object)],di.prototype,"eighteenOrOlder",void 0),a([T(),s("design:type",Object)],di.prototype,"isOpen",void 0),a([T(),s("design:type",Object)],di.prototype,"selectedDate",void 0),a([T(),s("design:type",Date)],di.prototype,"viewDate",void 0),a([T(),s("design:type",Object)],di.prototype,"isMobile",void 0),a([T(),s("design:type",Number)],di.prototype,"calendarWidth",void 0),a([T(),s("design:type",Object)],di.prototype,"inputValue",void 0),a([z(".input-container"),s("design:type",HTMLDivElement)],di.prototype,"inputContainer",void 0),di=a([d("datepicker-component")],di);const li={"application/pdf":"PDF","application/msword":"Word (.doc)","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Word (.docx)","image/jpeg":"JPEG","image/png":"PNG","text/plain":"Texto (.txt)"};let ci=class extends L{constructor(){super(...arguments),this.files=[],this.maxFiles=1,this.acceptedFileTypes=[],this.maxFileSize=5242880,this.buttonText="Agregar archivo",this.simulatedDelay=0,this.loading=!1,this.progress=0}static{this.styles=o`
3457
3457
  ${X}
3458
3458
  ${Q}
3459
3459
  ${K}