igniteui-webcomponents 6.4.0 → 6.5.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/CHANGELOG.md +62 -0
- package/components/calendar/base.d.ts +7 -3
- package/components/calendar/base.js +10 -14
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +48 -46
- package/components/calendar/calendar.js +259 -242
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +49 -27
- package/components/calendar/days-view/days-view.js +169 -160
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.js +40 -28
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/model.d.ts +9 -3
- package/components/calendar/model.js +29 -19
- package/components/calendar/model.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +6 -7
- package/components/calendar/months-view/months-view.js +24 -27
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/years-view/years-view.d.ts +6 -5
- package/components/calendar/years-view/years-view.js +11 -14
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/light/chip.fluent.css.js +1 -1
- package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/light/chip.indigo.css.js +1 -1
- package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/light/chip.shared.css.js +1 -1
- package/components/chip/themes/light/chip.shared.css.js.map +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
- package/components/common/definitions/defineAllComponents.js +2 -0
- package/components/common/definitions/defineAllComponents.js.map +1 -1
- package/components/date-range-picker/date-range-picker.js +1 -1
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +4 -1
- package/components/date-time-input/date-time-input.js +17 -6
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/file-input/file-input.d.ts +15 -13
- package/components/file-input/file-input.js +49 -47
- package/components/file-input/file-input.js.map +1 -1
- package/components/input/input-base.d.ts +31 -34
- package/components/input/input-base.js +58 -83
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +18 -7
- package/components/input/input.js +34 -19
- package/components/input/input.js.map +1 -1
- package/components/mask-input/mask-input-base.d.ts +10 -4
- package/components/mask-input/mask-input-base.js +18 -14
- package/components/mask-input/mask-input-base.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +9 -3
- package/components/mask-input/mask-input.js +26 -6
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/validators.js +1 -1
- package/components/mask-input/validators.js.map +1 -1
- package/components/theme-provider/theme-provider.d.ts +65 -0
- package/components/theme-provider/theme-provider.js +58 -0
- package/components/theme-provider/theme-provider.js.map +1 -0
- package/components/tile-manager/tile.js +6 -3
- package/components/tile-manager/tile.js.map +1 -1
- package/custom-elements.json +2136 -1596
- package/extras/chat-markdown-renderer.d.ts +72 -4
- package/extras/chat-markdown-renderer.js +19 -7
- package/extras/chat-markdown-renderer.js.map +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +3 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/themes/dark/bootstrap.css +1 -1
- package/themes/dark/fluent.css +1 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/dark/material.css +1 -1
- package/themes/light/bootstrap.css +1 -1
- package/themes/light/fluent.css +1 -1
- package/themes/light/indigo.css +1 -1
- package/themes/light/material.css +1 -1
- package/theming/context.d.ts +36 -0
- package/theming/context.js +3 -0
- package/theming/context.js.map +1 -0
- package/theming/theming-controller.d.ts +7 -1
- package/theming/theming-controller.js +48 -12
- package/theming/theming-controller.js.map +1 -1
- package/theming/utils.d.ts +10 -0
- package/theming/utils.js +8 -42
- package/theming/utils.js.map +1 -1
- package/web-types.json +1 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { asNumber, findElementFromEventPath, first,
|
|
2
|
-
import { CalendarDay,
|
|
1
|
+
import { asNumber, findElementFromEventPath, first, isString, last, modulo, } from '../common/util.js';
|
|
2
|
+
import { CalendarDay, DAYS_IN_WEEK, toCalendarDay, } from './model.js';
|
|
3
3
|
import { DateRangeType, } from './types.js';
|
|
4
4
|
export const MONTHS_PER_ROW = 3;
|
|
5
5
|
export const YEARS_PER_ROW = 3;
|
|
6
6
|
export const YEARS_PER_PAGE = 15;
|
|
7
|
-
const
|
|
7
|
+
const CALENDAR_CELLS = 42;
|
|
8
|
+
const ISO_DATE_PATTERN = /^\d{4}/;
|
|
9
|
+
const TIME_PATTERN = /^\d{2}/;
|
|
10
|
+
const WEEK_DAYS_MAP = {
|
|
8
11
|
sunday: 0,
|
|
9
12
|
monday: 1,
|
|
10
13
|
tuesday: 2,
|
|
@@ -17,13 +20,13 @@ export function isValidDate(date) {
|
|
|
17
20
|
return Number.isNaN(date.valueOf()) ? null : date;
|
|
18
21
|
}
|
|
19
22
|
export function parseISODate(string) {
|
|
20
|
-
if (
|
|
21
|
-
const
|
|
22
|
-
return isValidDate(new Date(`${string}${
|
|
23
|
+
if (ISO_DATE_PATTERN.test(string)) {
|
|
24
|
+
const timeComponent = !string.includes('T') ? 'T00:00:00' : '';
|
|
25
|
+
return isValidDate(new Date(`${string}${timeComponent}`));
|
|
23
26
|
}
|
|
24
|
-
if (
|
|
25
|
-
const
|
|
26
|
-
return isValidDate(new Date(`${
|
|
27
|
+
if (TIME_PATTERN.test(string)) {
|
|
28
|
+
const today = first(new Date().toISOString().split('T'));
|
|
29
|
+
return isValidDate(new Date(`${today}T${string}`));
|
|
27
30
|
}
|
|
28
31
|
return null;
|
|
29
32
|
}
|
|
@@ -56,9 +59,10 @@ export function convertToDates(value) {
|
|
|
56
59
|
return null;
|
|
57
60
|
}
|
|
58
61
|
const values = [];
|
|
59
|
-
const
|
|
60
|
-
for (const
|
|
61
|
-
const
|
|
62
|
+
const sources = isString(value) ? value.split(',') : value;
|
|
63
|
+
for (const source of sources) {
|
|
64
|
+
const trimmed = isString(source) ? source.trim() : source;
|
|
65
|
+
const date = convertToDate(trimmed);
|
|
62
66
|
if (date) {
|
|
63
67
|
values.push(date);
|
|
64
68
|
}
|
|
@@ -70,18 +74,21 @@ export function getViewElement(event) {
|
|
|
70
74
|
return element ? asNumber(element.dataset.value, -1) : -1;
|
|
71
75
|
}
|
|
72
76
|
export function getWeekDayNumber(value) {
|
|
73
|
-
return
|
|
77
|
+
return WEEK_DAYS_MAP[value];
|
|
74
78
|
}
|
|
75
79
|
export function areSameMonth(first, second) {
|
|
76
|
-
const
|
|
80
|
+
const a = toCalendarDay(first);
|
|
81
|
+
const b = toCalendarDay(second);
|
|
77
82
|
return a.year === b.year && a.month === b.month;
|
|
78
83
|
}
|
|
79
84
|
export function isNextMonth(target, origin) {
|
|
80
|
-
const
|
|
85
|
+
const a = toCalendarDay(target);
|
|
86
|
+
const b = toCalendarDay(origin);
|
|
81
87
|
return a.year === b.year ? a.month > b.month : a.year > b.year;
|
|
82
88
|
}
|
|
83
89
|
export function isPreviousMonth(target, origin) {
|
|
84
|
-
const
|
|
90
|
+
const a = toCalendarDay(target);
|
|
91
|
+
const b = toCalendarDay(origin);
|
|
85
92
|
return a.year === b.year ? a.month < b.month : a.year < b.year;
|
|
86
93
|
}
|
|
87
94
|
export function* calendarRange(options) {
|
|
@@ -110,10 +117,10 @@ export function* calendarRange(options) {
|
|
|
110
117
|
export function* generateMonth(value, firstWeekDay) {
|
|
111
118
|
const { year, month } = toCalendarDay(value);
|
|
112
119
|
const start = new CalendarDay({ year, month });
|
|
113
|
-
const offset = modulo(start.day - firstWeekDay,
|
|
120
|
+
const offset = modulo(start.day - firstWeekDay, DAYS_IN_WEEK);
|
|
114
121
|
yield* calendarRange({
|
|
115
122
|
start: start.add('day', -offset),
|
|
116
|
-
end:
|
|
123
|
+
end: CALENDAR_CELLS,
|
|
117
124
|
});
|
|
118
125
|
}
|
|
119
126
|
export function getYearRange(current, range) {
|
|
@@ -124,23 +131,28 @@ export function getYearRange(current, range) {
|
|
|
124
131
|
export function isDateInRanges(date, ranges) {
|
|
125
132
|
const value = toCalendarDay(date);
|
|
126
133
|
return ranges.some((range) => {
|
|
127
|
-
|
|
134
|
+
if (!range.dateRange?.length) {
|
|
135
|
+
return range.type === DateRangeType.Weekdays
|
|
136
|
+
? !value.weekend
|
|
137
|
+
: range.type === DateRangeType.Weekends
|
|
138
|
+
? value.weekend
|
|
139
|
+
: false;
|
|
140
|
+
}
|
|
141
|
+
const days = range.dateRange.map((day) => toCalendarDay(day));
|
|
142
|
+
const firstDay = first(days);
|
|
128
143
|
switch (range.type) {
|
|
129
144
|
case DateRangeType.After:
|
|
130
|
-
return value.greaterThan(
|
|
145
|
+
return value.greaterThan(firstDay);
|
|
131
146
|
case DateRangeType.Before:
|
|
132
|
-
return value.lessThan(
|
|
147
|
+
return value.lessThan(firstDay);
|
|
133
148
|
case DateRangeType.Between: {
|
|
134
|
-
const
|
|
135
|
-
const
|
|
149
|
+
const lastDay = last(days);
|
|
150
|
+
const min = Math.min(firstDay.timestamp, lastDay.timestamp);
|
|
151
|
+
const max = Math.max(firstDay.timestamp, lastDay.timestamp);
|
|
136
152
|
return value.timestamp >= min && value.timestamp <= max;
|
|
137
153
|
}
|
|
138
154
|
case DateRangeType.Specific:
|
|
139
155
|
return days.some((day) => day.equalTo(value));
|
|
140
|
-
case DateRangeType.Weekdays:
|
|
141
|
-
return !value.weekend;
|
|
142
|
-
case DateRangeType.Weekends:
|
|
143
|
-
return value.weekend;
|
|
144
156
|
default:
|
|
145
157
|
return false;
|
|
146
158
|
}
|
|
@@ -161,6 +173,6 @@ export function createDateConstraints(min, max, disabledDates) {
|
|
|
161
173
|
});
|
|
162
174
|
}
|
|
163
175
|
constraints.push(...(disabledDates ?? []));
|
|
164
|
-
return
|
|
176
|
+
return constraints.length > 0 ? constraints : undefined;
|
|
165
177
|
}
|
|
166
178
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/calendar/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n asNumber,\n findElementFromEventPath,\n first,\n isEmpty,\n isString,\n last,\n modulo,\n} from '../common/util.js';\nimport type { DateRangeValue } from '../date-range-picker/date-range-picker.js';\nimport {\n CalendarDay,\n type CalendarRangeParams,\n type DayParameter,\n daysInWeek,\n toCalendarDay,\n} from './model.js';\nimport {\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from './types.js';\n\n/* Constants */\n\nexport const MONTHS_PER_ROW = 3;\nexport const YEARS_PER_ROW = 3;\nexport const YEARS_PER_PAGE = 15;\n\nconst DaysMap = {\n sunday: 0,\n monday: 1,\n tuesday: 2,\n wednesday: 3,\n thursday: 4,\n friday: 5,\n saturday: 6,\n};\n\n/* Converter functions */\n\nexport function isValidDate(date: Date) {\n return Number.isNaN(date.valueOf()) ? null : date;\n}\n\nexport function parseISODate(string: string) {\n if (/^\\d{4}/.test(string)) {\n const time = !string.includes('T') ? 'T00:00:00' : '';\n return isValidDate(new Date(`${string}${time}`));\n }\n\n if (/^\\d{2}/.test(string)) {\n const date = first(new Date().toISOString().split('T'));\n return isValidDate(new Date(`${date}T${string}`));\n }\n\n return null;\n}\n\n/**\n * Converts the given value to a Date object.\n *\n * If the value is already a valid Date object, it is returned directly.\n * If the value is a string, it is parsed into a Date object.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null;\n }\n\n return isString(value) ? parseISODate(value) : isValidDate(value);\n}\n\n/**\n * Converts the given value to a DateRangeValue object.\n *\n * If the value is already a valid DateRangeValue object, it is returned directly.\n * If the value is a string, it is parsed to object and returned if it fields are valid dates.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDateRange(\n value?: DateRangeValue | string | null\n): DateRangeValue | null {\n if (!value) {\n return null;\n }\n\n if (isString(value)) {\n const obj = JSON.parse(value);\n const start = convertToDate(obj.start);\n const end = convertToDate(obj.end);\n return {\n start: start ? CalendarDay.from(start).native : null,\n end: end ? CalendarDay.from(end).native : null,\n };\n }\n return value;\n}\n\n/**\n * Converts a Date object to an ISO 8601 string.\n *\n * If the `value` is a `Date` object, it is converted to an ISO 8601 string.\n * If the `value` is null or undefined, null is returned.\n */\nexport function getDateFormValue(value: Date | null) {\n return value ? value.toISOString() : null;\n}\n\n/**\n * Converts a comma-separated string of ISO 8601 dates or an array of Date objects | ISO 8601 strings into\n * an array of Date objects.\n *\n * If the `value` is null or undefined, null is returned.\n * If the `value` is an array of `Date` objects, a filtered array of valid `Date` objects is returned.\n * If the `value` is a string, it is split by commas and each part is parsed into a `Date` object.\n * If the parsing fails for any date, it is skipped.\n */\nexport function convertToDates(value?: (Date | string)[] | string | null) {\n if (!value) {\n return null;\n }\n\n const values: Date[] = [];\n const iterator = isString(value) ? value.split(',') : value;\n\n for (const each of iterator) {\n const date = convertToDate(isString(each) ? each.trim() : each);\n if (date) {\n values.push(date);\n }\n }\n\n return values;\n}\n\n/**\n * Returns the value of the selected/activated element (day/month/year) in the calendar view.\n */\nexport function getViewElement(event: Event) {\n const element = findElementFromEventPath<HTMLElement>('[data-value]', event);\n return element ? asNumber(element.dataset.value, -1) : -1;\n}\n\nexport function getWeekDayNumber(value: WeekDays) {\n return DaysMap[value];\n}\n\nexport function areSameMonth(first: DayParameter, second: DayParameter) {\n const [a, b] = [toCalendarDay(first), toCalendarDay(second)];\n return a.year === b.year && a.month === b.month;\n}\n\nexport function isNextMonth(target: DayParameter, origin: DayParameter) {\n const [a, b] = [toCalendarDay(target), toCalendarDay(origin)];\n return a.year === b.year ? a.month > b.month : a.year > b.year;\n}\n\nexport function isPreviousMonth(target: DayParameter, origin: DayParameter) {\n const [a, b] = [toCalendarDay(target), toCalendarDay(origin)];\n return a.year === b.year ? a.month < b.month : a.year < b.year;\n}\n\n/**\n * Returns a generator yielding day values between `start` and `end` (non-inclusive by default)\n * by a given `unit` as a step.\n * To include the end date set the `inclusive` option to true.\n *\n * @remarks\n * By default, `unit` is set to 'day'.\n */\nexport function* calendarRange(\n options: CalendarRangeParams\n): Generator<CalendarDay, void, unknown> {\n const { start, end, unit = 'day', inclusive = false } = options;\n\n let currentDate = toCalendarDay(start);\n const endDate =\n typeof end === 'number'\n ? toCalendarDay(start).add(unit, end)\n : toCalendarDay(end);\n\n const isReversed = endDate.lessThan(currentDate);\n const step = isReversed ? -1 : 1;\n\n const shouldContinue = () => {\n if (inclusive) {\n return isReversed\n ? currentDate.greaterThanOrEqual(endDate)\n : currentDate.lessThanOrEqual(endDate);\n }\n return isReversed\n ? currentDate.greaterThan(endDate)\n : currentDate.lessThan(endDate);\n };\n\n while (shouldContinue()) {\n yield currentDate;\n currentDate = currentDate.add(unit, step);\n }\n}\n\nexport function* generateMonth(value: DayParameter, firstWeekDay: number) {\n const { year, month } = toCalendarDay(value);\n\n const start = new CalendarDay({ year, month });\n const offset = modulo(start.day - firstWeekDay, daysInWeek);\n yield* calendarRange({\n start: start.add('day', -offset),\n end: 42,\n });\n}\n\nexport function getYearRange(current: DayParameter, range: number) {\n const year = toCalendarDay(current).year;\n const start = Math.floor(year / range) * range;\n return { start, end: start + range - 1 };\n}\n\nexport function isDateInRanges(\n date: DayParameter,\n ranges: DateRangeDescriptor[]\n) {\n const value = toCalendarDay(date);\n\n return ranges.some((range) => {\n const days = (range.dateRange ?? []).map((day) => toCalendarDay(day));\n\n switch (range.type) {\n case DateRangeType.After:\n return value.greaterThan(first(days));\n\n case DateRangeType.Before:\n return value.lessThan(first(days));\n\n case DateRangeType.Between: {\n const min = Math.min(first(days).timestamp, last(days).timestamp);\n const max = Math.max(first(days).timestamp, last(days).timestamp);\n return value.timestamp >= min && value.timestamp <= max;\n }\n\n case DateRangeType.Specific:\n return days.some((day) => day.equalTo(value));\n\n case DateRangeType.Weekdays:\n return !value.weekend;\n\n case DateRangeType.Weekends:\n return value.weekend;\n\n default:\n return false;\n }\n });\n}\n\nexport function createDateConstraints(\n min: Date | null,\n max: Date | null,\n disabledDates?: DateRangeDescriptor[]\n) {\n const constraints: DateRangeDescriptor[] = [];\n\n if (min) {\n constraints.push({\n type: DateRangeType.Before,\n dateRange: [min],\n });\n }\n\n if (max) {\n constraints.push({\n type: DateRangeType.After,\n dateRange: [max],\n });\n }\n\n constraints.push(...(disabledDates ?? []));\n\n return !isEmpty(constraints) ? constraints : undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/calendar/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n asNumber,\n findElementFromEventPath,\n first,\n isString,\n last,\n modulo,\n} from '../common/util.js';\nimport type { DateRangeValue } from '../date-range-picker/date-range-picker.js';\nimport {\n CalendarDay,\n type CalendarRangeParams,\n DAYS_IN_WEEK,\n type DayParameter,\n toCalendarDay,\n} from './model.js';\nimport {\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from './types.js';\n\n/* Constants */\n\nexport const MONTHS_PER_ROW = 3;\nexport const YEARS_PER_ROW = 3;\nexport const YEARS_PER_PAGE = 15;\n\nconst CALENDAR_CELLS = 42; // 6 weeks × 7 days\nconst ISO_DATE_PATTERN = /^\\d{4}/;\nconst TIME_PATTERN = /^\\d{2}/;\nconst WEEK_DAYS_MAP = {\n sunday: 0,\n monday: 1,\n tuesday: 2,\n wednesday: 3,\n thursday: 4,\n friday: 5,\n saturday: 6,\n};\n\n/* Converter functions */\n\nexport function isValidDate(date: Date): Date | null {\n return Number.isNaN(date.valueOf()) ? null : date;\n}\n\nexport function parseISODate(string: string): Date | null {\n // ISO date format (YYYY-MM-DD)\n if (ISO_DATE_PATTERN.test(string)) {\n const timeComponent = !string.includes('T') ? 'T00:00:00' : '';\n return isValidDate(new Date(`${string}${timeComponent}`));\n }\n\n // Time format (HH:MM:SS)\n if (TIME_PATTERN.test(string)) {\n const today = first(new Date().toISOString().split('T'));\n return isValidDate(new Date(`${today}T${string}`));\n }\n\n return null;\n}\n\n/**\n * Converts the given value to a Date object.\n *\n * If the value is already a valid Date object, it is returned directly.\n * If the value is a string, it is parsed into a Date object.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null;\n }\n\n return isString(value) ? parseISODate(value) : isValidDate(value);\n}\n\n/**\n * Converts the given value to a DateRangeValue object.\n *\n * If the value is already a valid DateRangeValue object, it is returned directly.\n * If the value is a string, it is parsed to object and returned if it fields are valid dates.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDateRange(\n value?: DateRangeValue | string | null\n): DateRangeValue | null {\n if (!value) {\n return null;\n }\n\n if (isString(value)) {\n const obj = JSON.parse(value);\n const start = convertToDate(obj.start);\n const end = convertToDate(obj.end);\n return {\n start: start ? CalendarDay.from(start).native : null,\n end: end ? CalendarDay.from(end).native : null,\n };\n }\n return value;\n}\n\n/**\n * Converts a Date object to an ISO 8601 string.\n *\n * If the `value` is a `Date` object, it is converted to an ISO 8601 string.\n * If the `value` is null or undefined, null is returned.\n */\nexport function getDateFormValue(value: Date | null): string | null {\n return value ? value.toISOString() : null;\n}\n\n/**\n * Converts a comma-separated string of ISO 8601 dates or an array of Date objects | ISO 8601 strings into\n * an array of Date objects.\n *\n * If the `value` is null or undefined, null is returned.\n * If the `value` is an array of `Date` objects, a filtered array of valid `Date` objects is returned.\n * If the `value` is a string, it is split by commas and each part is parsed into a `Date` object.\n * If the parsing fails for any date, it is skipped.\n */\nexport function convertToDates(\n value?: (Date | string)[] | string | null\n): Date[] | null {\n if (!value) {\n return null;\n }\n\n const values: Date[] = [];\n const sources = isString(value) ? value.split(',') : value;\n\n for (const source of sources) {\n const trimmed = isString(source) ? source.trim() : source;\n const date = convertToDate(trimmed);\n if (date) {\n values.push(date);\n }\n }\n\n return values;\n}\n\n/**\n * Returns the value of the selected/activated element (day/month/year) in the calendar view.\n */\nexport function getViewElement(event: Event): number {\n const element = findElementFromEventPath<HTMLElement>('[data-value]', event);\n return element ? asNumber(element.dataset.value, -1) : -1;\n}\n\nexport function getWeekDayNumber(value: WeekDays): number {\n return WEEK_DAYS_MAP[value];\n}\n\nexport function areSameMonth(\n first: DayParameter,\n second: DayParameter\n): boolean {\n const a = toCalendarDay(first);\n const b = toCalendarDay(second);\n return a.year === b.year && a.month === b.month;\n}\n\nexport function isNextMonth(\n target: DayParameter,\n origin: DayParameter\n): boolean {\n const a = toCalendarDay(target);\n const b = toCalendarDay(origin);\n return a.year === b.year ? a.month > b.month : a.year > b.year;\n}\n\nexport function isPreviousMonth(\n target: DayParameter,\n origin: DayParameter\n): boolean {\n const a = toCalendarDay(target);\n const b = toCalendarDay(origin);\n return a.year === b.year ? a.month < b.month : a.year < b.year;\n}\n\n/**\n * Returns a generator yielding day values between `start` and `end` (non-inclusive by default)\n * by a given `unit` as a step.\n * To include the end date set the `inclusive` option to true.\n *\n * @remarks\n * By default, `unit` is set to 'day'.\n */\nexport function* calendarRange(\n options: CalendarRangeParams\n): Generator<CalendarDay, void, unknown> {\n const { start, end, unit = 'day', inclusive = false } = options;\n\n let currentDate = toCalendarDay(start);\n const endDate =\n typeof end === 'number'\n ? toCalendarDay(start).add(unit, end)\n : toCalendarDay(end);\n\n const isReversed = endDate.lessThan(currentDate);\n const step = isReversed ? -1 : 1;\n\n const shouldContinue = () => {\n if (inclusive) {\n return isReversed\n ? currentDate.greaterThanOrEqual(endDate)\n : currentDate.lessThanOrEqual(endDate);\n }\n return isReversed\n ? currentDate.greaterThan(endDate)\n : currentDate.lessThan(endDate);\n };\n\n while (shouldContinue()) {\n yield currentDate;\n currentDate = currentDate.add(unit, step);\n }\n}\n\nexport function* generateMonth(\n value: DayParameter,\n firstWeekDay: number\n): Generator<CalendarDay, void, unknown> {\n const { year, month } = toCalendarDay(value);\n\n const start = new CalendarDay({ year, month });\n const offset = modulo(start.day - firstWeekDay, DAYS_IN_WEEK);\n yield* calendarRange({\n start: start.add('day', -offset),\n end: CALENDAR_CELLS,\n });\n}\n\nexport function getYearRange(\n current: DayParameter,\n range: number\n): { start: number; end: number } {\n const year = toCalendarDay(current).year;\n const start = Math.floor(year / range) * range;\n return { start, end: start + range - 1 };\n}\n\nexport function isDateInRanges(\n date: DayParameter,\n ranges: DateRangeDescriptor[]\n): boolean {\n const value = toCalendarDay(date);\n\n return ranges.some((range) => {\n if (!range.dateRange?.length) {\n return range.type === DateRangeType.Weekdays\n ? !value.weekend\n : range.type === DateRangeType.Weekends\n ? value.weekend\n : false;\n }\n\n const days = range.dateRange.map((day) => toCalendarDay(day));\n const firstDay = first(days);\n\n switch (range.type) {\n case DateRangeType.After:\n return value.greaterThan(firstDay);\n\n case DateRangeType.Before:\n return value.lessThan(firstDay);\n\n case DateRangeType.Between: {\n const lastDay = last(days);\n const min = Math.min(firstDay.timestamp, lastDay.timestamp);\n const max = Math.max(firstDay.timestamp, lastDay.timestamp);\n return value.timestamp >= min && value.timestamp <= max;\n }\n\n case DateRangeType.Specific:\n return days.some((day) => day.equalTo(value));\n\n default:\n return false;\n }\n });\n}\n\nexport function createDateConstraints(\n min: Date | null,\n max: Date | null,\n disabledDates?: DateRangeDescriptor[]\n): DateRangeDescriptor[] | undefined {\n const constraints: DateRangeDescriptor[] = [];\n\n if (min) {\n constraints.push({\n type: DateRangeType.Before,\n dateRange: [min],\n });\n }\n\n if (max) {\n constraints.push({\n type: DateRangeType.After,\n dateRange: [max],\n });\n }\n\n constraints.push(...(disabledDates ?? []));\n\n return constraints.length > 0 ? constraints : undefined;\n}\n"]}
|
|
@@ -11,7 +11,7 @@ type CalendarDayParams = {
|
|
|
11
11
|
month: number;
|
|
12
12
|
date?: number;
|
|
13
13
|
};
|
|
14
|
-
export declare const
|
|
14
|
+
export declare const DAYS_IN_WEEK = 7;
|
|
15
15
|
export declare function toCalendarDay(date: DayParameter): CalendarDay;
|
|
16
16
|
export declare class CalendarDay {
|
|
17
17
|
private readonly _date;
|
|
@@ -29,7 +29,7 @@ export declare class CalendarDay {
|
|
|
29
29
|
* first < second // -1
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
|
-
static compare(first: DayParameter, second: DayParameter):
|
|
32
|
+
static compare(first: DayParameter, second: DayParameter): number;
|
|
33
33
|
constructor(args: CalendarDayParams);
|
|
34
34
|
/** Returns a copy of this instance. */
|
|
35
35
|
clone(): CalendarDay;
|
|
@@ -48,7 +48,13 @@ export declare class CalendarDay {
|
|
|
48
48
|
get date(): number;
|
|
49
49
|
/** Returns the timestamp since epoch in milliseconds. */
|
|
50
50
|
get timestamp(): number;
|
|
51
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Returns the ISO 8601 week number.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* Week 1 is the week containing the first Thursday of the year.
|
|
56
|
+
* Weeks start on Monday. Some years can have 53 weeks.
|
|
57
|
+
*/
|
|
52
58
|
get week(): number;
|
|
53
59
|
/** Returns the underlying native date instance. */
|
|
54
60
|
get native(): Date;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export const
|
|
2
|
-
const
|
|
1
|
+
export const DAYS_IN_WEEK = 7;
|
|
2
|
+
const MILLISECONDS_PER_DAY = 86400000;
|
|
3
|
+
const WEEKDAY_MIN = 1;
|
|
4
|
+
const WEEKDAY_MAX = 5;
|
|
3
5
|
export function toCalendarDay(date) {
|
|
4
6
|
return date instanceof Date ? CalendarDay.from(date) : date;
|
|
5
7
|
}
|
|
@@ -35,13 +37,12 @@ export class CalendarDay {
|
|
|
35
37
|
const year = args.year ?? this.year;
|
|
36
38
|
const month = args.month ?? this.month;
|
|
37
39
|
const date = args.date ?? this.date;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
year,
|
|
42
|
-
month,
|
|
43
|
-
|
|
44
|
-
});
|
|
40
|
+
if (date > 0) {
|
|
41
|
+
const temp = new Date(year, month, date);
|
|
42
|
+
if (temp.getMonth() !== month) {
|
|
43
|
+
const lastDayOfMonth = new Date(year, month + 1, 0).getDate();
|
|
44
|
+
return new CalendarDay({ year, month, date: lastDayOfMonth });
|
|
45
|
+
}
|
|
45
46
|
}
|
|
46
47
|
return new CalendarDay({ year, month, date });
|
|
47
48
|
}
|
|
@@ -64,7 +65,7 @@ export class CalendarDay {
|
|
|
64
65
|
result._date.setDate(result.date + value);
|
|
65
66
|
return result;
|
|
66
67
|
default:
|
|
67
|
-
throw new Error(
|
|
68
|
+
throw new Error(`Invalid interval: ${unit}`);
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
get day() {
|
|
@@ -83,30 +84,39 @@ export class CalendarDay {
|
|
|
83
84
|
return this._date.getTime();
|
|
84
85
|
}
|
|
85
86
|
get week() {
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
|
|
87
|
+
const target = new Date(this._date);
|
|
88
|
+
const dayNum = target.getDay() || 7;
|
|
89
|
+
target.setDate(target.getDate() + 4 - dayNum);
|
|
90
|
+
const yearStart = new Date(target.getFullYear(), 0, 1);
|
|
91
|
+
const weekNo = Math.ceil(((target.getTime() - yearStart.getTime()) / MILLISECONDS_PER_DAY + 1) /
|
|
92
|
+
DAYS_IN_WEEK);
|
|
93
|
+
return weekNo;
|
|
89
94
|
}
|
|
90
95
|
get native() {
|
|
91
96
|
return new Date(this._date);
|
|
92
97
|
}
|
|
93
98
|
get weekend() {
|
|
94
|
-
return this.day <
|
|
99
|
+
return this.day < WEEKDAY_MIN || this.day > WEEKDAY_MAX;
|
|
95
100
|
}
|
|
96
101
|
equalTo(value) {
|
|
97
|
-
|
|
102
|
+
const other = toCalendarDay(value).timestamp;
|
|
103
|
+
return this.timestamp === other;
|
|
98
104
|
}
|
|
99
105
|
greaterThan(value) {
|
|
100
|
-
|
|
106
|
+
const other = toCalendarDay(value).timestamp;
|
|
107
|
+
return this.timestamp > other;
|
|
101
108
|
}
|
|
102
109
|
greaterThanOrEqual(value) {
|
|
103
|
-
|
|
110
|
+
const other = toCalendarDay(value).timestamp;
|
|
111
|
+
return this.timestamp >= other;
|
|
104
112
|
}
|
|
105
113
|
lessThan(value) {
|
|
106
|
-
|
|
114
|
+
const other = toCalendarDay(value).timestamp;
|
|
115
|
+
return this.timestamp < other;
|
|
107
116
|
}
|
|
108
117
|
lessThanOrEqual(value) {
|
|
109
|
-
|
|
118
|
+
const other = toCalendarDay(value).timestamp;
|
|
119
|
+
return this.timestamp <= other;
|
|
110
120
|
}
|
|
111
121
|
toString() {
|
|
112
122
|
return `${this.native}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/components/calendar/model.ts"],"names":[],"mappings":"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","sourcesContent":["export type DayParameter = CalendarDay | Date;\n\nexport type CalendarRangeParams = {\n start: DayParameter;\n end: DayParameter | number;\n unit?: DayInterval;\n inclusive?: boolean;\n};\n\ntype DayInterval = 'year' | 'quarter' | 'month' | 'week' | 'day';\n\ntype CalendarDayParams = {\n year: number;\n month: number;\n date?: number;\n};\n\nexport const daysInWeek = 7;\nconst millisecondsInDay = 86400000;\n\nexport function toCalendarDay(date: DayParameter) {\n return date instanceof Date ? CalendarDay.from(date) : date;\n}\n\nfunction checkRollover(original: CalendarDay, modified: CalendarDay) {\n return original.date !== modified.date ? modified.set({ date: 0 }) : modified;\n}\n\n/* blazorSuppress */\nexport class CalendarDay {\n private readonly _date: Date;\n\n /** Constructs and returns the current day. */\n public static get today() {\n return CalendarDay.from(new Date());\n }\n\n /** Constructs a new CalendarDay instance from a Date object. */\n public static from(date: Date) {\n return new CalendarDay({\n year: date.getFullYear(),\n month: date.getMonth(),\n date: date.getDate(),\n });\n }\n\n /**\n * Compares the date portion of two date objects.\n *\n * @returns\n * ```\n * first === second // 0\n * first > second // 1\n * first < second // -1\n * ```\n */\n public static compare(first: DayParameter, second: DayParameter) {\n const a = toCalendarDay(first);\n const b = toCalendarDay(second);\n\n if (a.equalTo(b)) {\n return 0;\n }\n return a.greaterThan(b) ? 1 : -1;\n }\n\n constructor(args: CalendarDayParams) {\n this._date = new Date(args.year, args.month, args.date ?? 1);\n }\n\n /** Returns a copy of this instance. */\n public clone() {\n return CalendarDay.from(this._date);\n }\n\n /**\n * Returns a new instance with values replaced.\n */\n public set(args: Partial<CalendarDayParams>) {\n const year = args.year ?? this.year;\n const month = args.month ?? this.month;\n const date = args.date ?? this.date;\n\n const temp = new Date(year, month, date);\n\n if (date > 0 && temp.getMonth() !== month) {\n return new CalendarDay({\n year,\n month,\n date: new Date(year, month + 1, 0).getDate(),\n });\n }\n\n return new CalendarDay({ year, month, date });\n }\n\n public add(unit: DayInterval, value: number) {\n const result = this.clone();\n switch (unit) {\n case 'year':\n result._date.setFullYear(result.year + value);\n return checkRollover(this, result);\n case 'quarter':\n result._date.setMonth(result.month + 3 * value);\n return checkRollover(this, result);\n case 'month':\n result._date.setMonth(result.month + value);\n return checkRollover(this, result);\n case 'week':\n result._date.setDate(result.date + 7 * value);\n return result;\n case 'day':\n result._date.setDate(result.date + value);\n return result;\n default:\n throw new Error('Invalid interval');\n }\n }\n\n /** Returns the day of the week (Sunday = 0). */\n public get day() {\n return this._date.getDay();\n }\n\n /** Returns the full year. */\n public get year() {\n return this._date.getFullYear();\n }\n\n /** Returns the month. */\n public get month() {\n return this._date.getMonth();\n }\n\n /** Returns the date */\n public get date() {\n return this._date.getDate();\n }\n\n /** Returns the timestamp since epoch in milliseconds. */\n public get timestamp() {\n return this._date.getTime();\n }\n\n /** Returns the current week number. */\n public get week() {\n const firstDay = new CalendarDay({ year: this.year, month: 0 }).timestamp;\n const currentDay =\n (this.timestamp - firstDay + millisecondsInDay) / millisecondsInDay;\n return Math.ceil(currentDay / daysInWeek);\n }\n\n /** Returns the underlying native date instance. */\n public get native() {\n return new Date(this._date);\n }\n\n /**\n * Whether the current date is a weekend day.\n *\n * @remarks\n * This is naive, since it does not account for locale specifics.\n */\n public get weekend() {\n return this.day < 1 || this.day > 5;\n }\n\n public equalTo(value: DayParameter) {\n return this.timestamp === toCalendarDay(value).timestamp;\n }\n\n public greaterThan(value: DayParameter) {\n return this.timestamp > toCalendarDay(value).timestamp;\n }\n\n public greaterThanOrEqual(value: DayParameter) {\n return this.timestamp >= toCalendarDay(value).timestamp;\n }\n\n public lessThan(value: DayParameter) {\n return this.timestamp < toCalendarDay(value).timestamp;\n }\n\n public lessThanOrEqual(value: DayParameter) {\n return this.timestamp <= toCalendarDay(value).timestamp;\n }\n\n public toString() {\n return `${this.native}`;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/components/calendar/model.ts"],"names":[],"mappings":"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","sourcesContent":["export type DayParameter = CalendarDay | Date;\n\nexport type CalendarRangeParams = {\n start: DayParameter;\n end: DayParameter | number;\n unit?: DayInterval;\n inclusive?: boolean;\n};\n\ntype DayInterval = 'year' | 'quarter' | 'month' | 'week' | 'day';\n\ntype CalendarDayParams = {\n year: number;\n month: number;\n date?: number;\n};\n\nexport const DAYS_IN_WEEK = 7;\nconst MILLISECONDS_PER_DAY = 86400000;\nconst WEEKDAY_MIN = 1; // Monday\nconst WEEKDAY_MAX = 5; // Friday\n\nexport function toCalendarDay(date: DayParameter): CalendarDay {\n return date instanceof Date ? CalendarDay.from(date) : date;\n}\n\nfunction checkRollover(\n original: CalendarDay,\n modified: CalendarDay\n): CalendarDay {\n return original.date !== modified.date ? modified.set({ date: 0 }) : modified;\n}\n\n/* blazorSuppress */\nexport class CalendarDay {\n private readonly _date: Date;\n\n /** Constructs and returns the current day. */\n public static get today(): CalendarDay {\n return CalendarDay.from(new Date());\n }\n\n /** Constructs a new CalendarDay instance from a Date object. */\n public static from(date: Date): CalendarDay {\n return new CalendarDay({\n year: date.getFullYear(),\n month: date.getMonth(),\n date: date.getDate(),\n });\n }\n\n /**\n * Compares the date portion of two date objects.\n *\n * @returns\n * ```\n * first === second // 0\n * first > second // 1\n * first < second // -1\n * ```\n */\n public static compare(first: DayParameter, second: DayParameter): number {\n const a = toCalendarDay(first);\n const b = toCalendarDay(second);\n\n if (a.equalTo(b)) {\n return 0;\n }\n return a.greaterThan(b) ? 1 : -1;\n }\n\n constructor(args: CalendarDayParams) {\n this._date = new Date(args.year, args.month, args.date ?? 1);\n }\n\n /** Returns a copy of this instance. */\n public clone(): CalendarDay {\n return CalendarDay.from(this._date);\n }\n\n /**\n * Returns a new instance with values replaced.\n */\n public set(args: Partial<CalendarDayParams>): CalendarDay {\n const year = args.year ?? this.year;\n const month = args.month ?? this.month;\n const date = args.date ?? this.date;\n\n // Clamp date to the last day of the month if it exceeds the month's days\n if (date > 0) {\n const temp = new Date(year, month, date);\n if (temp.getMonth() !== month) {\n const lastDayOfMonth = new Date(year, month + 1, 0).getDate();\n return new CalendarDay({ year, month, date: lastDayOfMonth });\n }\n }\n\n return new CalendarDay({ year, month, date });\n }\n\n public add(unit: DayInterval, value: number): CalendarDay {\n const result = this.clone();\n\n switch (unit) {\n case 'year':\n result._date.setFullYear(result.year + value);\n return checkRollover(this, result);\n case 'quarter':\n result._date.setMonth(result.month + 3 * value);\n return checkRollover(this, result);\n case 'month':\n result._date.setMonth(result.month + value);\n return checkRollover(this, result);\n case 'week':\n result._date.setDate(result.date + 7 * value);\n return result;\n case 'day':\n result._date.setDate(result.date + value);\n return result;\n default:\n throw new Error(`Invalid interval: ${unit}`);\n }\n }\n\n /** Returns the day of the week (Sunday = 0). */\n public get day(): number {\n return this._date.getDay();\n }\n\n /** Returns the full year. */\n public get year(): number {\n return this._date.getFullYear();\n }\n\n /** Returns the month. */\n public get month(): number {\n return this._date.getMonth();\n }\n\n /** Returns the date */\n public get date(): number {\n return this._date.getDate();\n }\n\n /** Returns the timestamp since epoch in milliseconds. */\n public get timestamp(): number {\n return this._date.getTime();\n }\n\n /**\n * Returns the ISO 8601 week number.\n *\n * @remarks\n * Week 1 is the week containing the first Thursday of the year.\n * Weeks start on Monday. Some years can have 53 weeks.\n */\n public get week(): number {\n const target = new Date(this._date);\n\n const dayNum = target.getDay() || 7;\n target.setDate(target.getDate() + 4 - dayNum);\n\n const yearStart = new Date(target.getFullYear(), 0, 1);\n\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(\n ((target.getTime() - yearStart.getTime()) / MILLISECONDS_PER_DAY + 1) /\n DAYS_IN_WEEK\n );\n\n return weekNo;\n }\n\n /** Returns the underlying native date instance. */\n public get native(): Date {\n return new Date(this._date);\n }\n\n /**\n * Whether the current date is a weekend day.\n *\n * @remarks\n * This is naive, since it does not account for locale specifics.\n */\n public get weekend(): boolean {\n return this.day < WEEKDAY_MIN || this.day > WEEKDAY_MAX;\n }\n\n public equalTo(value: DayParameter): boolean {\n const other = toCalendarDay(value).timestamp;\n return this.timestamp === other;\n }\n\n public greaterThan(value: DayParameter): boolean {\n const other = toCalendarDay(value).timestamp;\n return this.timestamp > other;\n }\n\n public greaterThanOrEqual(value: DayParameter): boolean {\n const other = toCalendarDay(value).timestamp;\n return this.timestamp >= other;\n }\n\n public lessThan(value: DayParameter): boolean {\n const other = toCalendarDay(value).timestamp;\n return this.timestamp < other;\n }\n\n public lessThanOrEqual(value: DayParameter): boolean {\n const other = toCalendarDay(value).timestamp;\n return this.timestamp <= other;\n }\n\n public toString(): string {\n return `${this.native}`;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
1
|
+
import { LitElement, type TemplateResult } from 'lit';
|
|
2
2
|
import type { Constructor } from '../../common/mixins/constructor.js';
|
|
3
3
|
import { CalendarDay } from '../model.js';
|
|
4
4
|
import type { IgcCalendarComponentEventMap } from '../types.js';
|
|
@@ -17,7 +17,7 @@ export default class IgcMonthsViewComponent extends IgcMonthsViewComponent_base
|
|
|
17
17
|
static styles: import("lit").CSSResult;
|
|
18
18
|
static register(): void;
|
|
19
19
|
private _value;
|
|
20
|
-
private
|
|
20
|
+
private _activeMonth?;
|
|
21
21
|
/** Тhe current value of the calendar. */
|
|
22
22
|
set value(value: Date);
|
|
23
23
|
get value(): Date;
|
|
@@ -25,15 +25,14 @@ export default class IgcMonthsViewComponent extends IgcMonthsViewComponent_base
|
|
|
25
25
|
locale: string;
|
|
26
26
|
/** The format of the month. Defaults to long. */
|
|
27
27
|
monthFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';
|
|
28
|
-
private get _monthOptions();
|
|
29
|
-
private _ariaMonthOptions;
|
|
30
28
|
constructor();
|
|
29
|
+
/** @internal */
|
|
31
30
|
connectedCallback(): void;
|
|
31
|
+
protected _handleInteraction(event: Event): void;
|
|
32
32
|
/** Focuses the active date. */
|
|
33
33
|
focusActiveDate(options?: FocusOptions): void;
|
|
34
|
-
protected
|
|
35
|
-
protected
|
|
36
|
-
protected render(): Generator<import("lit-html").TemplateResult<1>, void, unknown>;
|
|
34
|
+
protected _renderMonth(month: CalendarDay, now: CalendarDay, ariaFormatter: Intl.DateTimeFormat, labelFormatter: Intl.DateTimeFormat): TemplateResult;
|
|
35
|
+
protected render(): Generator<TemplateResult>;
|
|
37
36
|
}
|
|
38
37
|
declare global {
|
|
39
38
|
interface HTMLElementTagNameMap {
|
|
@@ -8,7 +8,6 @@ var IgcMonthsViewComponent_1;
|
|
|
8
8
|
import { getDateFormatter } from 'igniteui-i18n-core';
|
|
9
9
|
import { html, LitElement } from 'lit';
|
|
10
10
|
import { property, query, state } from 'lit/decorators.js';
|
|
11
|
-
import { range } from 'lit/directives/range.js';
|
|
12
11
|
import { addThemingController } from '../../../theming/theming-controller.js';
|
|
13
12
|
import { addKeybindings } from '../../common/controllers/key-bindings.js';
|
|
14
13
|
import { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';
|
|
@@ -21,6 +20,7 @@ import { areSameMonth, getViewElement, MONTHS_PER_ROW } from '../helpers.js';
|
|
|
21
20
|
import { CalendarDay } from '../model.js';
|
|
22
21
|
import { all } from '../themes/year-month.js';
|
|
23
22
|
import { styles } from '../themes/year-month-view.base.css.js';
|
|
23
|
+
const MONTHS = Array.from({ length: 12 }, (_, i) => i);
|
|
24
24
|
let IgcMonthsViewComponent = class IgcMonthsViewComponent extends EventEmitterMixin(LitElement) {
|
|
25
25
|
static { IgcMonthsViewComponent_1 = this; }
|
|
26
26
|
static { this.tagName = 'igc-months-view'; }
|
|
@@ -34,64 +34,61 @@ let IgcMonthsViewComponent = class IgcMonthsViewComponent extends EventEmitterMi
|
|
|
34
34
|
get value() {
|
|
35
35
|
return this._value.native;
|
|
36
36
|
}
|
|
37
|
-
get _monthOptions() {
|
|
38
|
-
return { month: this.monthFormat };
|
|
39
|
-
}
|
|
40
37
|
constructor() {
|
|
41
38
|
super();
|
|
42
39
|
this._value = CalendarDay.today;
|
|
43
40
|
this.locale = 'en';
|
|
44
41
|
this.monthFormat = 'long';
|
|
45
|
-
this._ariaMonthOptions = {
|
|
46
|
-
month: 'long',
|
|
47
|
-
year: 'numeric',
|
|
48
|
-
};
|
|
49
42
|
addThemingController(this, all);
|
|
50
|
-
addKeybindings(this).setActivateHandler(this.
|
|
51
|
-
addSafeEventListener(this, 'click', this.
|
|
43
|
+
addKeybindings(this).setActivateHandler(this._handleInteraction);
|
|
44
|
+
addSafeEventListener(this, 'click', this._handleInteraction);
|
|
52
45
|
}
|
|
53
46
|
connectedCallback() {
|
|
54
47
|
super.connectedCallback();
|
|
55
48
|
this.role = 'grid';
|
|
56
49
|
}
|
|
57
|
-
|
|
58
|
-
this.activeMonth.focus(options);
|
|
59
|
-
}
|
|
60
|
-
handleInteraction(event) {
|
|
50
|
+
_handleInteraction(event) {
|
|
61
51
|
const value = getViewElement(event);
|
|
62
52
|
if (value !== -1) {
|
|
63
53
|
this._value = this._value.set({ month: value });
|
|
64
54
|
this.emitEvent('igcChange', { detail: this.value });
|
|
65
55
|
}
|
|
66
56
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
const
|
|
57
|
+
focusActiveDate(options) {
|
|
58
|
+
this._activeMonth?.focus(options);
|
|
59
|
+
}
|
|
60
|
+
_renderMonth(month, now, ariaFormatter, labelFormatter) {
|
|
61
|
+
const active = areSameMonth(this._value, month);
|
|
62
|
+
const current = areSameMonth(now, month);
|
|
63
|
+
const selected = this._value.month === month.month;
|
|
73
64
|
return html `
|
|
74
65
|
<span part=${partMap({ month: true, selected, current })}>
|
|
75
66
|
<span
|
|
76
67
|
role="gridcell"
|
|
77
|
-
data-value=${
|
|
68
|
+
data-value=${month.month}
|
|
78
69
|
part=${partMap({ 'month-inner': true, selected, current })}
|
|
79
70
|
aria-selected=${selected}
|
|
80
|
-
aria-label=${
|
|
71
|
+
aria-label=${ariaFormatter.format(month.native)}
|
|
81
72
|
tabindex=${active ? 0 : -1}
|
|
82
73
|
>
|
|
83
|
-
${
|
|
74
|
+
${labelFormatter.format(month.native)}
|
|
84
75
|
</span>
|
|
85
76
|
</span>
|
|
86
77
|
`;
|
|
87
78
|
}
|
|
88
79
|
*render() {
|
|
89
80
|
const now = CalendarDay.today;
|
|
90
|
-
const
|
|
91
|
-
|
|
81
|
+
const ariaFormatter = getDateFormatter().getIntlFormatter(this.locale, {
|
|
82
|
+
month: 'long',
|
|
83
|
+
year: 'numeric',
|
|
84
|
+
});
|
|
85
|
+
const labelFormatter = getDateFormatter().getIntlFormatter(this.locale, {
|
|
86
|
+
month: this.monthFormat,
|
|
87
|
+
});
|
|
88
|
+
for (const row of chunk(MONTHS, MONTHS_PER_ROW)) {
|
|
92
89
|
yield html `
|
|
93
90
|
<div part="months-row" role="row">
|
|
94
|
-
${row.map((month) => this.
|
|
91
|
+
${row.map((month) => this._renderMonth(this._value.set({ month }), now, ariaFormatter, labelFormatter))}
|
|
95
92
|
</div>
|
|
96
93
|
`;
|
|
97
94
|
}
|
|
@@ -102,7 +99,7 @@ __decorate([
|
|
|
102
99
|
], IgcMonthsViewComponent.prototype, "_value", void 0);
|
|
103
100
|
__decorate([
|
|
104
101
|
query('[tabindex="0"]')
|
|
105
|
-
], IgcMonthsViewComponent.prototype, "
|
|
102
|
+
], IgcMonthsViewComponent.prototype, "_activeMonth", void 0);
|
|
106
103
|
__decorate([
|
|
107
104
|
property({ attribute: false })
|
|
108
105
|
], IgcMonthsViewComponent.prototype, "value", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"months-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/months-view/months-view.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"months-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/months-view/months-view.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAaxC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB,CAGnE,UAAU,CAAC;;aACY,YAAO,GAAG,iBAAiB,AAApB,CAAqB;aACrC,WAAM,GAAG,MAAM,AAAT,CAAU;IAGvB,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,wBAAsB,CAAC,CAAC;IAC5C,CAAC;IAgBD,IAAW,KAAK,CAAC,KAAW;QAC1B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAeD;QACE,KAAK,EAAE,CAAC;QAjCF,WAAM,GAAG,WAAW,CAAC,KAAK,CAAC;QAqB5B,WAAM,GAAG,IAAI,CAAC;QAId,gBAAW,GAChB,MAAM,CAAC;QASP,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,cAAc,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjE,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IAGe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,CAAC;IAMS,kBAAkB,CAAC,KAAY;QACvC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAOM,eAAe,CAAC,OAAsB;QAC3C,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAIS,YAAY,CACpB,KAAkB,EAClB,GAAgB,EAChB,aAAkC,EAClC,cAAmC;QAEnC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;QAEnD,OAAO,IAAI,CAAA;mBACI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;;;uBAGvC,KAAK,CAAC,KAAK;iBACjB,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;0BAC1C,QAAQ;uBACX,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;qBACpC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAExB,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;;;KAG1C,CAAC;IACJ,CAAC;IAEkB,CAAC,MAAM;QACxB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC;QAE9B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;YACrE,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;YACtE,KAAK,EAAE,IAAI,CAAC,WAAW;SACxB,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAA;;YAEJ,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClB,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAC1B,GAAG,EACH,aAAa,EACb,cAAc,CACf,CACF;;OAEJ,CAAC;QACJ,CAAC;IACH,CAAC;;AAzHO;IADP,KAAK,EAAE;sDAC2B;AAG3B;IADP,KAAK,CAAC,gBAAgB,CAAC;4DACW;AAQnC;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;mDAG9B;AAQM;IADN,QAAQ,EAAE;sDACU;AAId;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2DAE/B;AAzCU,sBAAsB;IAF1C,oBAAoB;IACpB,uBAAuB;GACH,sBAAsB,CAyI1C;eAzIoB,sBAAsB","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, LitElement, type TemplateResult } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { addThemingController } from '../../../theming/theming-controller.js';\nimport { addKeybindings } from '../../common/controllers/key-bindings.js';\nimport { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '../../common/decorators/blazorSuppressComponent.js';\nimport { registerComponent } from '../../common/definitions/register.js';\nimport type { Constructor } from '../../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../../common/mixins/event-emitter.js';\nimport { partMap } from '../../common/part-map.js';\nimport { addSafeEventListener, chunk } from '../../common/util.js';\nimport { areSameMonth, getViewElement, MONTHS_PER_ROW } from '../helpers.js';\nimport { CalendarDay } from '../model.js';\nimport { all } from '../themes/year-month.js';\nimport { styles } from '../themes/year-month-view.base.css.js';\nimport type { IgcCalendarComponentEventMap } from '../types.js';\n\nconst MONTHS = Array.from({ length: 12 }, (_, i) => i);\n\n/**\n * Instantiate a months view as a separate component in the calendar.\n *\n * @element igc-months-view\n *\n * @csspart months-row - The months row container.\n * @csspart month - The month container.\n * @csspart month-inner - The inner month container.\n */\n@blazorIndirectRender\n@blazorSuppressComponent\nexport default class IgcMonthsViewComponent extends EventEmitterMixin<\n IgcCalendarComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-months-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcMonthsViewComponent);\n }\n\n //#region Internal State\n\n @state()\n private _value = CalendarDay.today;\n\n @query('[tabindex=\"0\"]')\n private _activeMonth?: HTMLElement;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /** Тhe current value of the calendar. */\n @property({ attribute: false })\n public set value(value: Date) {\n this._value = CalendarDay.from(value);\n }\n\n public get value(): Date {\n return this._value.native;\n }\n\n /** Sets the locale used for formatting and displaying the dates. */\n @property()\n public locale = 'en';\n\n /** The format of the month. Defaults to long. */\n @property({ attribute: 'month-format' })\n public monthFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' =\n 'long';\n\n //#endregion\n\n //#region Lifecycle methods\n\n constructor() {\n super();\n\n addThemingController(this, all);\n addKeybindings(this).setActivateHandler(this._handleInteraction);\n addSafeEventListener(this, 'click', this._handleInteraction);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.role = 'grid';\n }\n\n //#endregion\n\n //#region Event Handlers\n\n protected _handleInteraction(event: Event): void {\n const value = getViewElement(event);\n\n if (value !== -1) {\n this._value = this._value.set({ month: value });\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n //#endregion\n\n //#region Public Methods\n\n /** Focuses the active date. */\n public focusActiveDate(options?: FocusOptions): void {\n this._activeMonth?.focus(options);\n }\n\n //#endregion\n\n protected _renderMonth(\n month: CalendarDay,\n now: CalendarDay,\n ariaFormatter: Intl.DateTimeFormat,\n labelFormatter: Intl.DateTimeFormat\n ): TemplateResult {\n const active = areSameMonth(this._value, month);\n const current = areSameMonth(now, month);\n const selected = this._value.month === month.month;\n\n return html`\n <span part=${partMap({ month: true, selected, current })}>\n <span\n role=\"gridcell\"\n data-value=${month.month}\n part=${partMap({ 'month-inner': true, selected, current })}\n aria-selected=${selected}\n aria-label=${ariaFormatter.format(month.native)}\n tabindex=${active ? 0 : -1}\n >\n ${labelFormatter.format(month.native)}\n </span>\n </span>\n `;\n }\n\n protected override *render(): Generator<TemplateResult> {\n const now = CalendarDay.today;\n\n const ariaFormatter = getDateFormatter().getIntlFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n });\n const labelFormatter = getDateFormatter().getIntlFormatter(this.locale, {\n month: this.monthFormat,\n });\n\n for (const row of chunk(MONTHS, MONTHS_PER_ROW)) {\n yield html`\n <div part=\"months-row\" role=\"row\">\n ${row.map((month) =>\n this._renderMonth(\n this._value.set({ month }),\n now,\n ariaFormatter,\n labelFormatter\n )\n )}\n </div>\n `;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-months-view': IgcMonthsViewComponent;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
1
|
+
import { LitElement, type TemplateResult } from 'lit';
|
|
2
2
|
import type { Constructor } from '../../common/mixins/constructor.js';
|
|
3
3
|
import { CalendarDay } from '../model.js';
|
|
4
4
|
import type { IgcCalendarComponentEventMap } from '../types.js';
|
|
@@ -17,7 +17,7 @@ export default class IgcYearsViewComponent extends IgcYearsViewComponent_base {
|
|
|
17
17
|
static styles: import("lit").CSSResult;
|
|
18
18
|
static register(): void;
|
|
19
19
|
private _value;
|
|
20
|
-
private
|
|
20
|
+
private _activeYear?;
|
|
21
21
|
/** Тhe current value of the calendar. */
|
|
22
22
|
set value(value: Date);
|
|
23
23
|
get value(): Date;
|
|
@@ -28,10 +28,11 @@ export default class IgcYearsViewComponent extends IgcYearsViewComponent_base {
|
|
|
28
28
|
yearsPerPage: number;
|
|
29
29
|
constructor();
|
|
30
30
|
connectedCallback(): void;
|
|
31
|
+
protected _handleInteraction(event: Event): void;
|
|
32
|
+
/** Focuses the active year element. */
|
|
31
33
|
focusActiveDate(options?: FocusOptions): void;
|
|
32
|
-
protected
|
|
33
|
-
protected
|
|
34
|
-
protected render(): Generator<import("lit-html").TemplateResult<1>, void, unknown>;
|
|
34
|
+
protected _renderYear(year: number, now: CalendarDay): TemplateResult;
|
|
35
|
+
protected render(): Generator<TemplateResult>;
|
|
35
36
|
}
|
|
36
37
|
declare global {
|
|
37
38
|
interface HTMLElementTagNameMap {
|