@melodicdev/components 1.5.12 → 1.6.0
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/assets/melodic-components.js +1168 -451
- package/assets/melodic-components.js.map +1 -1
- package/assets/melodic-components.min.js +2480 -1814
- package/lib/components/data-display/badge/badge.styles.d.ts.map +1 -1
- package/lib/components/data-display/badge/badge.styles.js +11 -0
- package/lib/components/forms/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/lib/components/forms/autocomplete/autocomplete.component.js +17 -0
- package/lib/components/forms/checkbox/checkbox.component.d.ts.map +1 -1
- package/lib/components/forms/checkbox/checkbox.component.js +8 -0
- package/lib/components/forms/date-picker/calendar.component.d.ts +48 -0
- package/lib/components/forms/date-picker/calendar.component.d.ts.map +1 -1
- package/lib/components/forms/date-picker/calendar.component.js +231 -3
- package/lib/components/forms/date-picker/calendar.styles.d.ts.map +1 -1
- package/lib/components/forms/date-picker/calendar.styles.js +104 -2
- package/lib/components/forms/date-picker/calendar.template.d.ts.map +1 -1
- package/lib/components/forms/date-picker/calendar.template.js +128 -39
- package/lib/components/forms/date-picker/date-picker.component.d.ts +4 -0
- package/lib/components/forms/date-picker/date-picker.component.d.ts.map +1 -1
- package/lib/components/forms/date-picker/date-picker.component.js +13 -1
- package/lib/components/forms/date-picker/date-picker.template.d.ts.map +1 -1
- package/lib/components/forms/date-picker/date-picker.template.js +2 -0
- package/lib/components/forms/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/lib/components/forms/date-time-picker/date-time-picker.component.js +8 -0
- package/lib/components/forms/input/input.component.d.ts.map +1 -1
- package/lib/components/forms/input/input.component.js +8 -0
- package/lib/components/forms/radio/radio-group.component.d.ts.map +1 -1
- package/lib/components/forms/radio/radio-group.component.js +8 -0
- package/lib/components/forms/select/select.component.d.ts.map +1 -1
- package/lib/components/forms/select/select.component.js +17 -0
- package/lib/components/forms/slider/slider.component.d.ts.map +1 -1
- package/lib/components/forms/slider/slider.component.js +8 -0
- package/lib/components/forms/textarea/textarea.component.d.ts.map +1 -1
- package/lib/components/forms/textarea/textarea.component.js +8 -0
- package/lib/components/forms/time-picker/time-picker.component.d.ts.map +1 -1
- package/lib/components/forms/time-picker/time-picker.component.js +8 -0
- package/lib/components/forms/toggle/toggle.component.d.ts.map +1 -1
- package/lib/components/forms/toggle/toggle.component.js +8 -0
- package/lib/forms-adapters.d.ts +2 -0
- package/lib/forms-adapters.d.ts.map +1 -0
- package/lib/forms-adapters.js +105 -0
- package/package.json +1 -1
|
@@ -1,55 +1,144 @@
|
|
|
1
|
-
import { html, classMap, repeat } from '@melodicdev/core';
|
|
1
|
+
import { html, classMap, repeat, when } from '@melodicdev/core';
|
|
2
|
+
function dayGrid(c) {
|
|
3
|
+
return html `
|
|
4
|
+
<div class="ml-calendar__weekdays" role="row">
|
|
5
|
+
${repeat(c.weekdays, (d) => d, (d) => html `
|
|
6
|
+
<span class="ml-calendar__weekday" role="columnheader">${d}</span>
|
|
7
|
+
`)}
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="ml-calendar__grid" @keydown=${c.handleGridKeyDown}>
|
|
11
|
+
${repeat(c.days, (day) => day.iso, (day) => html `
|
|
12
|
+
<button
|
|
13
|
+
type="button"
|
|
14
|
+
class=${classMap({
|
|
15
|
+
'ml-calendar__day': true,
|
|
16
|
+
'ml-calendar__day--other-month': !day.isCurrentMonth,
|
|
17
|
+
'ml-calendar__day--today': day.isToday,
|
|
18
|
+
'ml-calendar__day--selected': day.isSelected,
|
|
19
|
+
'ml-calendar__day--disabled': day.isDisabled
|
|
20
|
+
})}
|
|
21
|
+
?disabled=${day.isDisabled || !day.isCurrentMonth}
|
|
22
|
+
tabindex=${day.isCurrentMonth ? '0' : '-1'}
|
|
23
|
+
aria-selected=${day.isSelected ? 'true' : 'false'}
|
|
24
|
+
aria-label=${day.iso}
|
|
25
|
+
@click=${() => c.selectDay(day)}
|
|
26
|
+
>
|
|
27
|
+
<span class="ml-calendar__day-number">${day.date}</span>
|
|
28
|
+
${day.isToday ? html `<span class="ml-calendar__today-dot"></span>` : ''}
|
|
29
|
+
</button>
|
|
30
|
+
`)}
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
function monthGrid(c) {
|
|
35
|
+
return html `
|
|
36
|
+
<div class="ml-calendar__cell-grid" @keydown=${c.handleGridKeyDown}>
|
|
37
|
+
${repeat(c.months, (m) => m.index, (m) => html `
|
|
38
|
+
<button
|
|
39
|
+
type="button"
|
|
40
|
+
class=${classMap({
|
|
41
|
+
'ml-calendar__cell': true,
|
|
42
|
+
'ml-calendar__cell--selected': m.isSelected,
|
|
43
|
+
'ml-calendar__cell--current': m.isCurrent,
|
|
44
|
+
'ml-calendar__cell--disabled': m.isDisabled
|
|
45
|
+
})}
|
|
46
|
+
?disabled=${m.isDisabled}
|
|
47
|
+
tabindex="0"
|
|
48
|
+
aria-selected=${m.isSelected ? 'true' : 'false'}
|
|
49
|
+
aria-label=${m.label}
|
|
50
|
+
@click=${() => c.selectViewMonth(m)}
|
|
51
|
+
>
|
|
52
|
+
${m.label}
|
|
53
|
+
</button>
|
|
54
|
+
`)}
|
|
55
|
+
</div>
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
function yearGrid(c) {
|
|
59
|
+
return html `
|
|
60
|
+
<div class="ml-calendar__cell-grid" @keydown=${c.handleGridKeyDown}>
|
|
61
|
+
${repeat(c.years, (y) => y.year, (y) => html `
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
class=${classMap({
|
|
65
|
+
'ml-calendar__cell': true,
|
|
66
|
+
'ml-calendar__cell--selected': y.isSelected,
|
|
67
|
+
'ml-calendar__cell--current': y.isCurrent,
|
|
68
|
+
'ml-calendar__cell--disabled': y.isDisabled
|
|
69
|
+
})}
|
|
70
|
+
?disabled=${y.isDisabled}
|
|
71
|
+
tabindex=${y.isDisabled ? '-1' : '0'}
|
|
72
|
+
aria-selected=${y.isSelected ? 'true' : 'false'}
|
|
73
|
+
aria-label=${String(y.year)}
|
|
74
|
+
@click=${() => c.selectViewYear(y)}
|
|
75
|
+
>
|
|
76
|
+
${y.year}
|
|
77
|
+
</button>
|
|
78
|
+
`)}
|
|
79
|
+
</div>
|
|
80
|
+
`;
|
|
81
|
+
}
|
|
2
82
|
export function calendarTemplate(c) {
|
|
3
83
|
return html `
|
|
4
|
-
<div class
|
|
84
|
+
<div class=${classMap({
|
|
85
|
+
'ml-calendar': true,
|
|
86
|
+
[`ml-calendar--view-${c.view}`]: true
|
|
87
|
+
})} role="grid" aria-label=${c.headerLabel}>
|
|
5
88
|
<div class="ml-calendar__header">
|
|
6
89
|
<div class="ml-calendar__nav-group">
|
|
7
|
-
<button type="button" class="ml-calendar__nav" aria-label="Previous
|
|
90
|
+
<button type="button" class="ml-calendar__nav" aria-label="Previous" @click=${c.headerPrevFar}>
|
|
8
91
|
<ml-icon icon="caret-double-left" size="sm"></ml-icon>
|
|
9
92
|
</button>
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
93
|
+
${when(c.view === 'day', () => html `
|
|
94
|
+
<button type="button" class="ml-calendar__nav" aria-label="Previous month" @click=${c.prevMonth}>
|
|
95
|
+
<ml-icon icon="caret-left" size="sm"></ml-icon>
|
|
96
|
+
</button>
|
|
97
|
+
`)}
|
|
13
98
|
</div>
|
|
14
|
-
|
|
99
|
+
|
|
100
|
+
${when(c.view === 'day', () => html `
|
|
101
|
+
<div class="ml-calendar__title">
|
|
102
|
+
<button
|
|
103
|
+
type="button"
|
|
104
|
+
class="ml-calendar__title-btn"
|
|
105
|
+
aria-label="Select month"
|
|
106
|
+
aria-expanded="false"
|
|
107
|
+
@click=${c.openMonthView}
|
|
108
|
+
>${c.monthLabel}</button>
|
|
109
|
+
<button
|
|
110
|
+
type="button"
|
|
111
|
+
class="ml-calendar__title-btn"
|
|
112
|
+
aria-label="Select year"
|
|
113
|
+
aria-expanded="false"
|
|
114
|
+
@click=${c.openYearView}
|
|
115
|
+
>${c.viewYear}</button>
|
|
116
|
+
</div>
|
|
117
|
+
`, () => html `
|
|
118
|
+
<button
|
|
119
|
+
type="button"
|
|
120
|
+
class="ml-calendar__title-btn ml-calendar__title-btn--wide"
|
|
121
|
+
aria-label=${c.view === 'month' ? 'Back to day view' : 'Select year'}
|
|
122
|
+
aria-expanded="true"
|
|
123
|
+
@click=${c.view === 'month' ? c.openMonthView : c.openYearView}
|
|
124
|
+
>${c.headerLabel}</button>
|
|
125
|
+
`)}
|
|
126
|
+
|
|
15
127
|
<div class="ml-calendar__nav-group">
|
|
16
|
-
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
128
|
+
${when(c.view === 'day', () => html `
|
|
129
|
+
<button type="button" class="ml-calendar__nav" aria-label="Next month" @click=${c.nextMonth}>
|
|
130
|
+
<ml-icon icon="caret-right" size="sm"></ml-icon>
|
|
131
|
+
</button>
|
|
132
|
+
`)}
|
|
133
|
+
<button type="button" class="ml-calendar__nav" aria-label="Next" @click=${c.headerNextFar}>
|
|
20
134
|
<ml-icon icon="caret-double-right" size="sm"></ml-icon>
|
|
21
135
|
</button>
|
|
22
136
|
</div>
|
|
23
137
|
</div>
|
|
24
138
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
`)}
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div class="ml-calendar__grid">
|
|
32
|
-
${repeat(c.days, (day) => day.iso, (day) => html `
|
|
33
|
-
<button
|
|
34
|
-
type="button"
|
|
35
|
-
class=${classMap({
|
|
36
|
-
'ml-calendar__day': true,
|
|
37
|
-
'ml-calendar__day--other-month': !day.isCurrentMonth,
|
|
38
|
-
'ml-calendar__day--today': day.isToday,
|
|
39
|
-
'ml-calendar__day--selected': day.isSelected,
|
|
40
|
-
'ml-calendar__day--disabled': day.isDisabled
|
|
41
|
-
})}
|
|
42
|
-
?disabled=${day.isDisabled || !day.isCurrentMonth}
|
|
43
|
-
tabindex=${day.isCurrentMonth ? '0' : '-1'}
|
|
44
|
-
aria-selected=${day.isSelected ? 'true' : 'false'}
|
|
45
|
-
aria-label=${day.iso}
|
|
46
|
-
@click=${() => c.selectDay(day)}
|
|
47
|
-
>
|
|
48
|
-
<span class="ml-calendar__day-number">${day.date}</span>
|
|
49
|
-
${day.isToday ? html `<span class="ml-calendar__today-dot"></span>` : ''}
|
|
50
|
-
</button>
|
|
51
|
-
`)}
|
|
52
|
-
</div>
|
|
139
|
+
${when(c.view === 'day', () => dayGrid(c))}
|
|
140
|
+
${when(c.view === 'month', () => monthGrid(c))}
|
|
141
|
+
${when(c.view === 'year', () => yearGrid(c))}
|
|
53
142
|
|
|
54
143
|
<div class="ml-calendar__footer">
|
|
55
144
|
<button type="button" class="ml-calendar__today-btn" @click=${c.goToToday}>Today</button>
|
|
@@ -34,6 +34,10 @@ export declare class DatePickerComponent implements IElementRef, OnCreate, OnDes
|
|
|
34
34
|
min: string;
|
|
35
35
|
/** Maximum selectable date (YYYY-MM-DD) */
|
|
36
36
|
max: string;
|
|
37
|
+
/** Earliest year reachable in the year picker (defaults to currentYear - 120) */
|
|
38
|
+
minYear: number | string;
|
|
39
|
+
/** Latest year reachable in the year picker (defaults to currentYear + 10) */
|
|
40
|
+
maxYear: number | string;
|
|
37
41
|
/** Whether the calendar popover is open */
|
|
38
42
|
isOpen: boolean;
|
|
39
43
|
private _cleanupAutoUpdate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/date-picker/date-picker.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"date-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/date-picker/date-picker.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAczE;;;;;;;;;;;;GAYG;AACH,qBAMa,mBAAoB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS;IACpE,UAAU,EAAG,WAAW,CAAC;IAEhC,+CAA+C;IACxC,KAAK,SAAM;IAElB,uBAAuB;IAChB,WAAW,SAAiB;IAEnC,kBAAkB;IACX,KAAK,SAAM;IAElB,gBAAgB;IACT,IAAI,SAAM;IAEjB,oBAAoB;IACb,KAAK,SAAM;IAElB,iBAAiB;IACV,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEvC,qBAAqB;IACd,QAAQ,UAAS;IAExB,qBAAqB;IACd,QAAQ,UAAS;IAExB,2CAA2C;IACpC,GAAG,SAAM;IAEhB,2CAA2C;IACpC,GAAG,SAAM;IAEhB,iFAAiF;IAC1E,OAAO,EAAE,MAAM,GAAG,MAAM,CAAM;IAErC,8EAA8E;IACvE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAM;IAErC,2CAA2C;IACpC,MAAM,UAAS;IAEtB,OAAO,CAAC,kBAAkB,CAA6B;IAEhD,QAAQ,IAAI,IAAI;IAOhB,SAAS,IAAI,IAAI;IAQjB,cAAc,QAAO,IAAI,CAM9B;IAEF,uDAAuD;IAChD,WAAW,GAAI,OAAO,KAAK,KAAG,IAAI,CAGvC;IAEF,4CAA4C;IACrC,gBAAgB,QAAO,IAAI,CAIhC;IAEF,oFAAoF;IAC7E,gBAAgB,GAAI,OAAO,KAAK,KAAG,IAAI,CAK5C;IAEK,aAAa,GAAI,OAAO,aAAa,KAAG,IAAI,CAmBjD;IAEF,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAW5B;IAEF,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;CAGpB"}
|
|
@@ -5,9 +5,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { computePosition, autoUpdate, offset, flip, shift } from '../../../utils/positioning/index.js';
|
|
9
10
|
import { datePickerTemplate } from './date-picker.template.js';
|
|
10
11
|
import { datePickerStyles } from './date-picker.styles.js';
|
|
12
|
+
registerAdapter((el) => el.tagName === 'ML-DATE-PICKER', {
|
|
13
|
+
inputEvent: 'ml:select',
|
|
14
|
+
blurEvent: 'focusout',
|
|
15
|
+
getValue: (el) => el.value ?? '',
|
|
16
|
+
setValue: (el, value) => { el.value = value !== null && value !== undefined ? String(value) : ''; },
|
|
17
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
18
|
+
});
|
|
11
19
|
/**
|
|
12
20
|
* ml-date-picker - Date input with calendar dropdown
|
|
13
21
|
*
|
|
@@ -43,6 +51,10 @@ let DatePickerComponent = class DatePickerComponent {
|
|
|
43
51
|
this.min = '';
|
|
44
52
|
/** Maximum selectable date (YYYY-MM-DD) */
|
|
45
53
|
this.max = '';
|
|
54
|
+
/** Earliest year reachable in the year picker (defaults to currentYear - 120) */
|
|
55
|
+
this.minYear = '';
|
|
56
|
+
/** Latest year reachable in the year picker (defaults to currentYear + 10) */
|
|
57
|
+
this.maxYear = '';
|
|
46
58
|
/** Whether the calendar popover is open */
|
|
47
59
|
this.isOpen = false;
|
|
48
60
|
this._cleanupAutoUpdate = null;
|
|
@@ -172,7 +184,7 @@ DatePickerComponent = __decorate([
|
|
|
172
184
|
selector: 'ml-date-picker',
|
|
173
185
|
template: datePickerTemplate,
|
|
174
186
|
styles: datePickerStyles,
|
|
175
|
-
attributes: ['value', 'placeholder', 'label', 'hint', 'error', 'size', 'disabled', 'required', 'min', 'max']
|
|
187
|
+
attributes: ['value', 'placeholder', 'label', 'hint', 'error', 'size', 'disabled', 'required', 'min', 'max', 'min-year', 'max-year']
|
|
176
188
|
})
|
|
177
189
|
], DatePickerComponent);
|
|
178
190
|
export { DatePickerComponent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.template.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/date-picker/date-picker.template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"date-picker.template.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/date-picker/date-picker.template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,mBAAmB,6CA8DxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/date-time-picker/date-time-picker.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"date-time-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/date-time-picker/date-time-picker.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAczE,OAAO,yCAAyC,CAAC;AACjD,OAAO,yCAAyC,CAAC;AAiCjD;;;;;;;;;;;;;GAaG;AACH,qBAMa,uBAAwB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS;IACxE,UAAU,EAAG,WAAW,CAAC;IAEhC,yDAAyD;IAClD,KAAK,SAAM;IAElB,uBAAuB;IAChB,WAAW,SAA0B;IAE5C,kBAAkB;IACX,KAAK,SAAM;IAElB,gBAAgB;IACT,IAAI,SAAM;IAEjB,oBAAoB;IACb,KAAK,SAAM;IAElB,iBAAiB;IACV,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEvC,qBAAqB;IACd,QAAQ,UAAS;IAExB,qBAAqB;IACd,QAAQ,UAAS;IAExB,2CAA2C;IACpC,OAAO,SAAM;IAEpB,2CAA2C;IACpC,OAAO,SAAM;IAEpB,sCAAsC;IAC/B,OAAO,SAAM;IAEpB,sCAAsC;IAC/B,OAAO,SAAM;IAEpB,2BAA2B;IACpB,IAAI,SAAM;IAEjB,yCAAyC;IAClC,UAAU,UAAQ;IAEzB,4BAA4B;IACrB,SAAS,SAAM;IAEtB,4BAA4B;IACrB,SAAS,SAAM;IAEtB,OAAO,CAAC,UAAU,CAAyB;IAE3C,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAEM,QAAQ,IAAI,IAAI;IAKhB,SAAS,IAAI,IAAI;IAKxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,oBAAoB;IA+E5B,OAAO,CAAC,UAAU;CAqBlB"}
|
|
@@ -5,8 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { dateTimePickerTemplate } from './date-time-picker.template.js';
|
|
9
10
|
import { dateTimePickerStyles } from './date-time-picker.styles.js';
|
|
11
|
+
registerAdapter((el) => el.tagName === 'ML-DATE-TIME-PICKER', {
|
|
12
|
+
inputEvent: 'ml:change',
|
|
13
|
+
blurEvent: 'focusout',
|
|
14
|
+
getValue: (el) => el.value ?? '',
|
|
15
|
+
setValue: (el, value) => { el.value = value !== null && value !== undefined ? String(value) : ''; },
|
|
16
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
17
|
+
});
|
|
10
18
|
// Ensure sub-components are registered
|
|
11
19
|
import '../date-picker/date-picker.component.js';
|
|
12
20
|
import '../time-picker/time-picker.component.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/input/input.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"input.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/input/input.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAYlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAMa,cAAe,YAAW,WAAW,EAAE,MAAM;IAClD,UAAU,EAAG,WAAW,CAAC;IAEhC,iBAAiB;IACV,IAAI,EAAE,SAAS,CAAU;IAEhC,oBAAoB;IACb,KAAK,SAAM;IAElB,uBAAuB;IAChB,WAAW,SAAM;IAExB,iBAAiB;IACV,KAAK,SAAM;IAElB,kCAAkC;IAC3B,IAAI,SAAM;IAEjB,iDAAiD;IAC1C,KAAK,SAAM;IAElB,iBAAiB;IACV,IAAI,EAAE,IAAI,CAAQ;IAEzB,wBAAwB;IACjB,QAAQ,UAAS;IAExB,0BAA0B;IACnB,QAAQ,UAAS;IAExB,uBAAuB;IAChB,QAAQ,UAAS;IAExB,6BAA6B;IACtB,YAAY,SAAS;IAE5B,2BAA2B;IACpB,OAAO,UAAS;IAEhB,MAAM,IAAI,IAAI;IAOd,WAAW,GAAI,OAAO,KAAK,KAAG,IAAI,CAWvC;IAEK,YAAY,GAAI,OAAO,KAAK,KAAG,IAAI,CAWxC;IAEK,WAAW,QAAO,IAAI,CAQ3B;IAEK,UAAU,QAAO,IAAI,CAQ1B;CACF"}
|
|
@@ -5,8 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { inputTemplate } from './input.template.js';
|
|
9
10
|
import { inputStyles } from './input.styles.js';
|
|
11
|
+
registerAdapter((el) => el.tagName === 'ML-INPUT', {
|
|
12
|
+
inputEvent: 'ml:input',
|
|
13
|
+
blurEvent: 'focusout',
|
|
14
|
+
getValue: (el) => el.value ?? '',
|
|
15
|
+
setValue: (el, value) => { el.value = value !== null && value !== undefined ? String(value) : ''; },
|
|
16
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
17
|
+
});
|
|
10
18
|
/**
|
|
11
19
|
* ml-input - Text input component with label, hint, and error states
|
|
12
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/radio/radio-group.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"radio-group.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/radio/radio-group.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAY3D;;;;;;;;;;;;GAYG;AACH,qBAMa,mBAAoB,YAAW,WAAW,EAAE,MAAM;IACvD,UAAU,EAAG,WAAW,CAAC;IAEhC,kBAAkB;IACX,KAAK,SAAM;IAElB,sBAAsB;IACf,IAAI,SAAM;IAEjB,6BAA6B;IACtB,KAAK,SAAM;IAElB,gBAAgB;IACT,IAAI,SAAM;IAEjB,oBAAoB;IACb,KAAK,SAAM;IAElB,yBAAyB;IAClB,WAAW,EAAE,WAAW,CAAc;IAE7C,qBAAqB;IACd,QAAQ,UAAS;IAExB,qBAAqB;IACd,QAAQ,UAAS;IAEjB,MAAM,IAAI,IAAI;IAQrB,OAAO,CAAC,iBAAiB,CAmBvB;IAEF,OAAO,CAAC,iBAAiB;CAuBzB"}
|
|
@@ -5,8 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { radioGroupTemplate } from './radio-group.template.js';
|
|
9
10
|
import { radioGroupStyles } from './radio-group.styles.js';
|
|
11
|
+
registerAdapter((el) => el.tagName === 'ML-RADIO-GROUP', {
|
|
12
|
+
inputEvent: 'ml:change',
|
|
13
|
+
blurEvent: 'focusout',
|
|
14
|
+
getValue: (el) => el.value ?? '',
|
|
15
|
+
setValue: (el, value) => { el.value = value !== null && value !== undefined ? String(value) : ''; },
|
|
16
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
17
|
+
});
|
|
10
18
|
/**
|
|
11
19
|
* ml-radio-group - Container for radio buttons
|
|
12
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/select/select.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"select.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/select/select.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { computePosition, offset, flip, shift } from '../../../utils/positioning/index.js';
|
|
9
10
|
import { selectTemplate } from './select.template.js';
|
|
10
11
|
import { selectStyles } from './select.styles.js';
|
|
12
|
+
registerAdapter((el) => el.tagName === 'ML-SELECT', {
|
|
13
|
+
inputEvent: 'ml:change',
|
|
14
|
+
blurEvent: 'focusout',
|
|
15
|
+
getValue: (el) => {
|
|
16
|
+
const e = el;
|
|
17
|
+
return e.multiple ? (e.values ?? []) : (e.value ?? '');
|
|
18
|
+
},
|
|
19
|
+
setValue: (el, value) => {
|
|
20
|
+
const e = el;
|
|
21
|
+
if (Array.isArray(value))
|
|
22
|
+
e.values = value;
|
|
23
|
+
else
|
|
24
|
+
e.value = value !== null && value !== undefined ? String(value) : '';
|
|
25
|
+
},
|
|
26
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
27
|
+
});
|
|
11
28
|
/**
|
|
12
29
|
* ml-select - Custom select/dropdown component
|
|
13
30
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/slider/slider.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"slider.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/slider/slider.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAYpD;;;;;;;;;;;GAWG;AACH,qBAMa,eAAgB,YAAW,WAAW;IAC3C,UAAU,EAAG,WAAW,CAAC;IAEhC,iBAAiB;IACV,KAAK,SAAM;IAElB,oBAAoB;IACb,KAAK,SAAM;IAElB,oBAAoB;IACb,GAAG,SAAK;IAEf,oBAAoB;IACb,GAAG,SAAO;IAEjB,qBAAqB;IACd,IAAI,SAAK;IAEhB,kBAAkB;IACX,IAAI,EAAE,IAAI,CAAQ;IAEzB,yBAAyB;IAClB,QAAQ,UAAS;IAExB,yBAAyB;IAClB,SAAS,UAAS;IAEzB,gBAAgB;IACT,IAAI,SAAM;IAEjB,oBAAoB;IACb,KAAK,SAAM;IAElB,+BAA+B;IAC/B,IAAW,KAAK,IAAI,MAAM,CAIzB;IAED,4DAA4D;IAC5D,IAAW,SAAS,IAAI,MAAM,CAG7B;IAEM,WAAW,GAAI,OAAO,KAAK,KAAG,IAAI,CAWvC;IAEK,YAAY,GAAI,OAAO,KAAK,KAAG,IAAI,CAWxC;CACF"}
|
|
@@ -5,8 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { sliderTemplate } from './slider.template.js';
|
|
9
10
|
import { sliderStyles } from './slider.styles.js';
|
|
11
|
+
registerAdapter((el) => el.tagName === 'ML-SLIDER', {
|
|
12
|
+
inputEvent: 'ml:input',
|
|
13
|
+
blurEvent: 'focusout',
|
|
14
|
+
getValue: (el) => Number(el.value) || 0,
|
|
15
|
+
setValue: (el, value) => { el.value = Number(value) || 0; },
|
|
16
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
17
|
+
});
|
|
10
18
|
/**
|
|
11
19
|
* ml-slider - Range slider input
|
|
12
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/textarea/textarea.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"textarea.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/textarea/textarea.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAYpD;;;;;;;;;;;;;;GAcG;AACH,qBAMa,iBAAkB,YAAW,WAAW,EAAE,MAAM;IACrD,UAAU,EAAG,WAAW,CAAC;IAEhC,oBAAoB;IACb,KAAK,SAAM;IAElB,uBAAuB;IAChB,WAAW,SAAM;IAExB,iBAAiB;IACV,KAAK,SAAM;IAElB,qCAAqC;IAC9B,IAAI,SAAM;IAEjB,iDAAiD;IAC1C,KAAK,SAAM;IAElB,iBAAiB;IACV,IAAI,EAAE,IAAI,CAAQ;IAEzB,mCAAmC;IAC5B,IAAI,SAAK;IAEhB,+BAA+B;IACxB,SAAS,SAAK;IAErB,2BAA2B;IACpB,QAAQ,UAAS;IAExB,6BAA6B;IACtB,QAAQ,UAAS;IAExB,uBAAuB;IAChB,QAAQ,UAAS;IAExB,4BAA4B;IACrB,MAAM,UAAS;IAEtB,2BAA2B;IACpB,OAAO,UAAS;IAEhB,MAAM,IAAI,IAAI;IAMd,WAAW,GAAI,OAAO,KAAK,KAAG,IAAI,CAWvC;IAEK,YAAY,GAAI,OAAO,KAAK,KAAG,IAAI,CAWxC;IAEK,WAAW,QAAO,IAAI,CAQ3B;IAEK,UAAU,QAAO,IAAI,CAQ1B;CACF"}
|
|
@@ -5,8 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { textareaTemplate } from './textarea.template.js';
|
|
9
10
|
import { textareaStyles } from './textarea.styles.js';
|
|
11
|
+
registerAdapter((el) => el.tagName === 'ML-TEXTAREA', {
|
|
12
|
+
inputEvent: 'ml:input',
|
|
13
|
+
blurEvent: 'focusout',
|
|
14
|
+
getValue: (el) => el.value ?? '',
|
|
15
|
+
setValue: (el, value) => { el.value = value !== null && value !== undefined ? String(value) : ''; },
|
|
16
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
17
|
+
});
|
|
10
18
|
/**
|
|
11
19
|
* ml-textarea - Multi-line text input component
|
|
12
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/time-picker/time-picker.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"time-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/time-picker/time-picker.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAuCzE;;;;;;;;;;;GAWG;AACH,qBAMa,mBAAoB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS;IACpE,UAAU,EAAG,WAAW,CAAC;IAEhC,gDAAgD;IACzC,KAAK,SAAM;IAElB,uBAAuB;IAChB,WAAW,SAAiB;IAEnC,kBAAkB;IACX,KAAK,SAAM;IAElB,gBAAgB;IACT,IAAI,SAAM;IAEjB,oBAAoB;IACb,KAAK,SAAM;IAElB,iBAAiB;IACV,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEvC,qBAAqB;IACd,QAAQ,UAAS;IAExB,qBAAqB;IACd,QAAQ,UAAS;IAExB,sCAAsC;IAC/B,GAAG,SAAM;IAEhB,sCAAsC;IAC/B,GAAG,SAAM;IAEhB,uFAAuF;IAChF,IAAI,SAAM;IAEjB,oDAAoD;IAC7C,UAAU,UAAQ;IAEzB,kCAAkC;IAC3B,MAAM,UAAS;IAEtB,2BAA2B;IACpB,QAAQ,SAAK;IAEpB,6BAA6B;IACtB,UAAU,SAAK;IAEtB,6BAA6B;IACtB,UAAU,SAAK;IAEtB,oCAAoC;IAC7B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAQ;IAEtC,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,WAAW,IAAI,MAAM,CAQ/B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAEM,QAAQ,IAAI,IAAI;IAOhB,SAAS,IAAI,IAAI;IAQjB,aAAa,QAAO,IAAI,CAM7B;IAEK,aAAa,QAAO,IAAI,CAS7B;IAEK,aAAa,QAAO,IAAI,CAQ7B;IAEK,eAAe,QAAO,IAAI,CAE/B;IAEK,eAAe,QAAO,IAAI,CAE/B;IAEK,eAAe,QAAO,IAAI,CAE/B;IAEK,eAAe,QAAO,IAAI,CAE/B;IAEK,YAAY,QAAO,IAAI,CAI5B;IAEK,gBAAgB,QAAO,IAAI,CAOhC;IAEK,cAAc,QAAO,IAAI,CAM9B;IAEF,uDAAuD;IAChD,eAAe,GAAI,OAAO,KAAK,KAAG,IAAI,CAG3C;IAEF,2CAA2C;IACpC,gBAAgB,QAAO,IAAI,CAIhC;IAEK,aAAa,GAAI,OAAO,aAAa,KAAG,IAAI,CAmBjD;IAEK,eAAe,GAAI,OAAO,KAAK,KAAG,IAAI,CAa3C;IAEK,iBAAiB,GAAI,OAAO,KAAK,KAAG,IAAI,CAO7C;IAEK,iBAAiB,GAAI,OAAO,KAAK,KAAG,IAAI,CAO7C;IAEK,cAAc,QAAO,IAAI,CAK9B;IAEK,gBAAgB,QAAO,IAAI,CAEhC;IAEK,gBAAgB,QAAO,IAAI,CAEhC;IAEK,gBAAgB,GAAI,OAAO,KAAK,KAAG,IAAI,CAE5C;IAEK,oBAAoB,GAAI,OAAO,aAAa,KAAG,IAAI,CAkBxD;IAEF,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAY5B;IAEF,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;CAGpB"}
|
|
@@ -5,9 +5,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { computePosition, autoUpdate, offset, flip, shift } from '../../../utils/positioning/index.js';
|
|
9
10
|
import { timePickerTemplate } from './time-picker.template.js';
|
|
10
11
|
import { timePickerStyles } from './time-picker.styles.js';
|
|
12
|
+
registerAdapter((el) => el.tagName === 'ML-TIME-PICKER', {
|
|
13
|
+
inputEvent: 'ml:change',
|
|
14
|
+
blurEvent: 'focusout',
|
|
15
|
+
getValue: (el) => el.value ?? '',
|
|
16
|
+
setValue: (el, value) => { el.value = value !== null && value !== undefined ? String(value) : ''; },
|
|
17
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
18
|
+
});
|
|
11
19
|
function pad(n) {
|
|
12
20
|
return String(n).padStart(2, '0');
|
|
13
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/toggle/toggle.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"toggle.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/toggle/toggle.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAYpD;;;;;;;;;;;GAWG;AACH,qBAMa,eAAgB,YAAW,WAAW;IAC3C,UAAU,EAAG,WAAW,CAAC;IAEhC,mBAAmB;IACZ,KAAK,SAAM;IAElB,gBAAgB;IACT,IAAI,SAAM;IAEjB,kBAAkB;IACX,IAAI,EAAE,IAAI,CAAQ;IAEzB,oBAAoB;IACb,OAAO,UAAS;IAEvB,qBAAqB;IACd,QAAQ,UAAS;IAEjB,YAAY,GAAI,OAAO,KAAK,KAAG,IAAI,CAgBxC;CACF"}
|
|
@@ -5,8 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { MelodicComponent } from '@melodicdev/core';
|
|
8
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
8
9
|
import { toggleTemplate } from './toggle.template.js';
|
|
9
10
|
import { toggleStyles } from './toggle.styles.js';
|
|
11
|
+
registerAdapter((el) => el.tagName === 'ML-TOGGLE', {
|
|
12
|
+
inputEvent: 'ml:change',
|
|
13
|
+
blurEvent: 'focusout',
|
|
14
|
+
getValue: (el) => Boolean(el.checked),
|
|
15
|
+
setValue: (el, value) => { el.checked = Boolean(value); },
|
|
16
|
+
setDisabled: (el, disabled) => { el.disabled = disabled; }
|
|
17
|
+
});
|
|
10
18
|
/**
|
|
11
19
|
* ml-toggle - Toggle/switch component
|
|
12
20
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms-adapters.d.ts","sourceRoot":"","sources":["../src/forms-adapters.ts"],"names":[],"mappings":"AA+FA,wBAAgB,2BAA2B,IAAI,IAAI,CAiBlD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { registerAdapter } from '@melodicdev/core/forms';
|
|
2
|
+
const valueTextInputAdapter = {
|
|
3
|
+
inputEvent: 'ml:input',
|
|
4
|
+
blurEvent: 'focusout',
|
|
5
|
+
getValue(element) {
|
|
6
|
+
return element.value ?? '';
|
|
7
|
+
},
|
|
8
|
+
setValue(element, value) {
|
|
9
|
+
element.value = value !== null && value !== undefined ? String(value) : '';
|
|
10
|
+
},
|
|
11
|
+
setDisabled(element, disabled) {
|
|
12
|
+
element.disabled = disabled;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const valueChangeInputAdapter = {
|
|
16
|
+
inputEvent: 'ml:change',
|
|
17
|
+
blurEvent: 'focusout',
|
|
18
|
+
getValue(element) {
|
|
19
|
+
return element.value ?? '';
|
|
20
|
+
},
|
|
21
|
+
setValue(element, value) {
|
|
22
|
+
element.value = value !== null && value !== undefined ? String(value) : '';
|
|
23
|
+
},
|
|
24
|
+
setDisabled(element, disabled) {
|
|
25
|
+
element.disabled = disabled;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const selectInputAdapter = {
|
|
29
|
+
inputEvent: 'ml:change',
|
|
30
|
+
blurEvent: 'focusout',
|
|
31
|
+
getValue(element) {
|
|
32
|
+
const el = element;
|
|
33
|
+
return el.multiple ? (el.values ?? []) : (el.value ?? '');
|
|
34
|
+
},
|
|
35
|
+
setValue(element, value) {
|
|
36
|
+
const el = element;
|
|
37
|
+
if (Array.isArray(value)) {
|
|
38
|
+
el.values = value;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
el.value = value !== null && value !== undefined ? String(value) : '';
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
setDisabled(element, disabled) {
|
|
45
|
+
element.disabled = disabled;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const booleanCheckedAdapter = {
|
|
49
|
+
inputEvent: 'ml:change',
|
|
50
|
+
blurEvent: 'focusout',
|
|
51
|
+
getValue(element) {
|
|
52
|
+
return Boolean(element.checked);
|
|
53
|
+
},
|
|
54
|
+
setValue(element, value) {
|
|
55
|
+
element.checked = Boolean(value);
|
|
56
|
+
},
|
|
57
|
+
setDisabled(element, disabled) {
|
|
58
|
+
element.disabled = disabled;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const numberValueAdapter = {
|
|
62
|
+
inputEvent: 'ml:input',
|
|
63
|
+
blurEvent: 'focusout',
|
|
64
|
+
getValue(element) {
|
|
65
|
+
return Number(element.value) || 0;
|
|
66
|
+
},
|
|
67
|
+
setValue(element, value) {
|
|
68
|
+
element.value = Number(value) || 0;
|
|
69
|
+
},
|
|
70
|
+
setDisabled(element, disabled) {
|
|
71
|
+
element.disabled = disabled;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const datePickerAdapter = {
|
|
75
|
+
inputEvent: 'ml:select',
|
|
76
|
+
blurEvent: 'focusout',
|
|
77
|
+
getValue(element) {
|
|
78
|
+
return element.value ?? '';
|
|
79
|
+
},
|
|
80
|
+
setValue(element, value) {
|
|
81
|
+
element.value = value !== null && value !== undefined ? String(value) : '';
|
|
82
|
+
},
|
|
83
|
+
setDisabled(element, disabled) {
|
|
84
|
+
element.disabled = disabled;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
let registered = false;
|
|
88
|
+
export function registerMelodicFormAdapters() {
|
|
89
|
+
if (registered)
|
|
90
|
+
return;
|
|
91
|
+
registered = true;
|
|
92
|
+
const tagMatcher = (tag) => (el) => el.tagName === tag;
|
|
93
|
+
registerAdapter(tagMatcher('ML-INPUT'), valueTextInputAdapter);
|
|
94
|
+
registerAdapter(tagMatcher('ML-TEXTAREA'), valueTextInputAdapter);
|
|
95
|
+
registerAdapter(tagMatcher('ML-SLIDER'), numberValueAdapter);
|
|
96
|
+
registerAdapter(tagMatcher('ML-SELECT'), selectInputAdapter);
|
|
97
|
+
registerAdapter(tagMatcher('ML-AUTOCOMPLETE'), selectInputAdapter);
|
|
98
|
+
registerAdapter(tagMatcher('ML-CHECKBOX'), booleanCheckedAdapter);
|
|
99
|
+
registerAdapter(tagMatcher('ML-TOGGLE'), booleanCheckedAdapter);
|
|
100
|
+
registerAdapter(tagMatcher('ML-RADIO-GROUP'), valueChangeInputAdapter);
|
|
101
|
+
registerAdapter(tagMatcher('ML-DATE-PICKER'), datePickerAdapter);
|
|
102
|
+
registerAdapter(tagMatcher('ML-TIME-PICKER'), valueChangeInputAdapter);
|
|
103
|
+
registerAdapter(tagMatcher('ML-DATE-TIME-PICKER'), valueChangeInputAdapter);
|
|
104
|
+
}
|
|
105
|
+
registerMelodicFormAdapters();
|