igniteui-webcomponents 7.3.1 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/components/avatar/themes/avatar.base.css.js +1 -1
- package/components/avatar/themes/avatar.base.css.js.map +1 -1
- package/components/badge/themes/badge.base.css.js +1 -1
- package/components/badge/themes/badge.base.css.js.map +1 -1
- package/components/banner/themes/banner.base.css.js +1 -1
- package/components/banner/themes/banner.base.css.js.map +1 -1
- package/components/banner/themes/shared/banner.indigo.css.js +1 -1
- package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
- package/components/calendar/base.d.ts +7 -2
- package/components/calendar/base.js +8 -3
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +4 -0
- package/components/calendar/calendar.js +41 -14
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +3 -6
- package/components/calendar/days-view/days-view.js +7 -16
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.d.ts +13 -0
- package/components/calendar/helpers.js +15 -0
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/themes/calendar.base.css.js +1 -1
- package/components/calendar/themes/calendar.base.css.js.map +1 -1
- package/components/calendar/themes/days-view.base.css.js +1 -1
- package/components/calendar/themes/days-view.base.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
- package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
- package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
- package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
- package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
- package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
- package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
- package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
- package/components/calendar/themes/year-month-view.base.css.js +1 -1
- package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
- package/components/card/themes/container.base.css.js +1 -1
- package/components/card/themes/container.base.css.js.map +1 -1
- package/components/carousel/themes/carousel.base.css.js +1 -1
- package/components/carousel/themes/carousel.base.css.js.map +1 -1
- package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
- package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
- package/components/chat/themes/chat.base.css.js +1 -1
- package/components/chat/themes/chat.base.css.js.map +1 -1
- package/components/chat/themes/message.base.css.js +1 -1
- package/components/chat/themes/message.base.css.js.map +1 -1
- package/components/checkbox/themes/checkbox.base.css.js +1 -1
- package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
- package/components/checkbox/themes/switch.base.css.js +1 -1
- package/components/checkbox/themes/switch.base.css.js.map +1 -1
- package/components/color-picker/themes/color-picker.base.css.js +1 -1
- package/components/color-picker/themes/color-picker.base.css.js.map +1 -1
- package/components/combo/themes/combo-item.base.css.js +1 -1
- package/components/combo/themes/combo-item.base.css.js.map +1 -1
- package/components/combo/themes/combo.base.css.js +1 -1
- package/components/combo/themes/combo.base.css.js.map +1 -1
- package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
- package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +11 -2
- package/components/date-picker/date-picker.base.js +8 -3
- package/components/date-picker/date-picker.base.js.map +1 -1
- package/components/date-picker/themes/date-picker.base.css.js +1 -1
- package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
- package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
- package/components/divider/themes/divider.base.css.js +1 -1
- package/components/divider/themes/divider.base.css.js.map +1 -1
- package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
- package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
- package/components/dropdown/themes/dropdown.base.css.js +1 -1
- package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
- package/components/file-input/themes/file-input.base.css.js +1 -1
- package/components/file-input/themes/file-input.base.css.js.map +1 -1
- package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
- package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
- package/components/input/themes/shared/input.indigo.css.js +1 -1
- package/components/input/themes/shared/input.indigo.css.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/list/themes/item.base.css.js +1 -1
- package/components/list/themes/item.base.css.js.map +1 -1
- package/components/nav-drawer/themes/item.base.css.js +1 -1
- package/components/nav-drawer/themes/item.base.css.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
- package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.d.ts +1 -0
- package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +3 -0
- package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -0
- package/components/progress/themes/linear/themes.js +3 -2
- package/components/progress/themes/linear/themes.js.map +1 -1
- package/components/qr-code/qr-code.d.ts +28 -1
- package/components/qr-code/qr-code.js +56 -13
- package/components/qr-code/qr-code.js.map +1 -1
- package/components/qr-code/renderer/export.d.ts +28 -0
- package/components/qr-code/renderer/export.js +120 -0
- package/components/qr-code/renderer/export.js.map +1 -0
- package/components/qr-code/types.d.ts +26 -0
- package/components/qr-code/types.js.map +1 -1
- package/components/radio/themes/radio.base.css.js +1 -1
- package/components/radio/themes/radio.base.css.js.map +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
- package/components/resize-container/themes/resize-container.base.css.d.ts +1 -0
- package/components/resize-container/themes/resize-container.base.css.js +3 -0
- package/components/resize-container/themes/resize-container.base.css.js.map +1 -0
- package/components/select/themes/select.base.css.js +1 -1
- package/components/select/themes/select.base.css.js.map +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
- package/components/slider/themes/shared/slider.material.css.js +1 -1
- package/components/slider/themes/shared/slider.material.css.js.map +1 -1
- package/components/slider/themes/slider.base.css.js +1 -1
- package/components/slider/themes/slider.base.css.js.map +1 -1
- package/components/snackbar/themes/snackbar.base.css.js +1 -1
- package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
- package/components/splitter/themes/splitter.base.css.js +1 -1
- package/components/splitter/themes/splitter.base.css.js.map +1 -1
- package/components/stepper/themes/step/step.base.css.js +1 -1
- package/components/stepper/themes/step/step.base.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.fluent.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.fluent.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
- package/components/tabs/themes/tab.base.css.js +1 -1
- package/components/tabs/themes/tab.base.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.common.css.js +1 -1
- package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
- package/components/tile-manager/themes/tile.base.css.js +1 -1
- package/components/tile-manager/themes/tile.base.css.js.map +1 -1
- package/components/toast/themes/toast.base.css.js +1 -1
- package/components/toast/themes/toast.base.css.js.map +1 -1
- package/components/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
- package/components/tree/themes/item.base.css.js +1 -1
- package/components/tree/themes/item.base.css.js.map +1 -1
- package/components/validation-container/themes/validator.base.css.js +1 -1
- package/components/validation-container/themes/validator.base.css.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +10 -12
- package/components/validation-container/validation-container.js +14 -17
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +563 -93
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +1 -1
- package/index.js.map +1 -1
- package/internals/definitions/defineAllComponents.js +4 -0
- package/internals/definitions/defineAllComponents.js.map +1 -1
- package/package.json +1 -1
- package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +21 -0
- package/skills/igniteui-wc-integrate-with-framework/SKILL.md +4 -3
- package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +14 -0
- package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +12 -2
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/components/calendar/calendar.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n pageDownKey,\n pageUpKey,\n shiftKey,\n} from '#internals/controllers/key-bindings.js';\nimport { CalendarDay } from '#internals/date/model.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { firstOf, lastOf } from '#internals/utils/arrays.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { clamp } from '#internals/utils/math.js';\nimport { formatString } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type { ContentOrientation } from '../types.js';\nimport { IgcCalendarBaseComponent } from './base.js';\nimport IgcDaysViewComponent from './days-view/days-view.js';\nimport {\n areSameMonth,\n getYearRange,\n isDateInRanges,\n MONTHS_PER_ROW,\n YEARS_PER_PAGE,\n YEARS_PER_ROW,\n} from './helpers.js';\nimport IgcMonthsViewComponent from './months-view/months-view.js';\nimport { selectDate } from './selection.js';\nimport { styles } from './themes/calendar.base.css.js';\nimport { all } from './themes/calendar.js';\nimport type {\n CalendarActiveView,\n CalendarHeaderOrientation,\n IgcCalendarComponentEventMap,\n} from './types.js';\nimport IgcYearsViewComponent from './years-view/years-view.js';\n\nexport const focusActiveDate = Symbol();\n\n/** How many consecutive disabled days keyboard navigation will skip over before giving up. */\nconst MAX_DISABLED_DATE_SKIP = 1000;\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * Represents a calendar that lets users\n * to select a date value in a variety of different ways.\n *\n * @element igc-calendar\n *\n * @slot - The default slot for the calendar.\n * @slot title - Renders the title of the calendar header.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n *\n * @fires igcChange - Emitted when calendar changes its value.\n *\n * @csspart header - The header element of the calendar.\n * @csspart header-title - The header title element of the calendar.\n * @csspart header-date - The header date element of the calendar.\n * @csspart content - The content element which contains the views and navigation elements of the calendar.\n * @csspart content-vertical - The content element which contains the views and navigation elements of the calendar in vertical orientation.\n * @csspart navigation - The navigation container element of the calendar.\n * @csspart months-navigation - The months navigation button element of the calendar.\n * @csspart years-navigation - The years navigation button element of the calendar.\n * @csspart years-range - The years range element of the calendar.\n * @csspart navigation-buttons - The navigation buttons container of the calendar.\n * @csspart navigation-button - Previous/next navigation button of the calendar.\n * @csspart days-view-container - The days view container element of the calendar.\n * @csspart days-view - Days view element of the calendar.\n * @csspart months-view - The months view element of the calendar.\n * @csspart years-view - The years view element of the calendar.\n * @csspart days-row - Days row element of the calendar.\n * @csspart months-row - Months row element of the calendar.\n * @csspart years-row - Years row element of the calendar.\n * @csspart label - Week header label element of the calendar.\n * @csspart label-inner - Week header label inner element of the calendar.\n * @csspart week-number - Week number element of the calendar.\n * @csspart week-number-inner - Week number inner element of the calendar.\n * @csspart date - Date element of the calendar.\n * @csspart date-inner - Date inner element of the calendar.\n * @csspart first - The first selected date element of the calendar in range selection.\n * Also applies to the week numbers header cell.\n * @csspart last - The last selected date element of the calendar in range selection.\n * Also applies to the week number of the last rendered week.\n * @csspart inactive - Inactive date element of the calendar.\n * @csspart hidden - Hidden date element of the calendar.\n * @csspart weekend - Weekend date element of the calendar.\n * @csspart range - Range selected element of the calendar.\n * @csspart special - Special date element of the calendar.\n * @csspart disabled - Disabled date element of the calendar.\n * @csspart single - Single selected date element of the calendar.\n * @csspart preview - Range selection preview date element of the calendar.\n * @csspart month - Month element of the calendar.\n * @csspart month-inner - Month inner element of the calendar.\n * @csspart year - Year element of the calendar.\n * @csspart year-inner - Year inner element of the calendar.\n * @csspart selected - Indicates selected state. Applies to date, month and year elements of the calendar.\n * @csspart current - Indicates current state. Applies to date, month and year elements of the calendar.\n */\nexport default class IgcCalendarComponent extends EventEmitterMixin<\n IgcCalendarComponentEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-calendar';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcCalendarComponent,\n IgcIconComponent,\n IgcDaysViewComponent,\n IgcMonthsViewComponent,\n IgcYearsViewComponent\n );\n }\n\n //#region Internal state\n\n private readonly _contentRef = createRef<HTMLDivElement>();\n\n private get _isDayView(): boolean {\n return this.activeView === 'days';\n }\n\n private get _isMonthView(): boolean {\n return this.activeView === 'months';\n }\n\n private get _isYearView(): boolean {\n return this.activeView === 'years';\n }\n\n /** The accessible name of a navigation button, based on what it pages through. */\n private _getNavigationLabel(direction: 'previous' | 'next'): string {\n const isPrevious = direction === 'previous';\n const strings = this.resourceStrings;\n\n switch (this.activeView) {\n case 'days':\n return (\n isPrevious\n ? strings.calendar_previous_month\n : strings.calendar_next_month\n )!;\n case 'months':\n return (\n isPrevious\n ? strings.calendar_previous_year\n : strings.calendar_next_year\n )!;\n case 'years':\n return formatString(\n (isPrevious\n ? strings.calendar_previous_years\n : strings.calendar_next_years)!,\n YEARS_PER_PAGE\n );\n }\n }\n\n /** The unit and the amount a single navigation step covers in the current view. */\n private _getPageStep(delta: -1 | 1): {\n unit: 'month' | 'year';\n increment: number;\n } {\n return {\n unit: this._isDayView ? 'month' : 'year',\n increment: (this._isYearView ? YEARS_PER_PAGE : 1) * delta,\n };\n }\n\n @state()\n private _activeDaysViewIndex = 0;\n\n @queryAll(IgcDaysViewComponent.tagName)\n private readonly _daysViews!: NodeListOf<IgcDaysViewComponent>;\n\n @query(IgcMonthsViewComponent.tagName)\n private readonly _monthsView!: IgcMonthsViewComponent;\n\n @query(IgcYearsViewComponent.tagName)\n private readonly _yearsView!: IgcYearsViewComponent;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Whether to hide the dates that do not belong to the current active month.\n * @attr hide-outside-days\n * @default false\n */\n @property({ type: Boolean, attribute: 'hide-outside-days', reflect: true })\n public hideOutsideDays = false;\n\n /**\n * Whether to render the calendar header part.\n * When the calendar selection is set to `multiple` the header is always hidden.\n *\n * @attr hide-header\n * @default false\n */\n @property({ type: Boolean, attribute: 'hide-header', reflect: true })\n public hideHeader = false;\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n * @default \"horizontal\"\n */\n @property({ reflect: true, attribute: 'header-orientation' })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the calendar months when more than one month\n * is being shown.\n * @attr orientation\n * @default \"horizontal\"\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * The number of months displayed in the days view.\n * @attr visible-months\n * @default 1\n */\n @property({ type: Number, attribute: 'visible-months' })\n public visibleMonths = 1;\n\n /**\n * The current active view of the component.\n * @attr active-view\n * @default \"days\"\n */\n @property({ attribute: 'active-view' })\n public activeView: CalendarActiveView = 'days';\n\n /** The options used to format the months and the weekdays in the calendar views. */\n @property({ attribute: false })\n public formatOptions: Pick<Intl.DateTimeFormatOptions, 'month' | 'weekday'> =\n { month: 'long', weekday: 'narrow' };\n\n //#endregion\n\n //#region Lifecycle hooks\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addKeybindings(this, {\n skip: this._shouldSkipKeyboardEvent,\n ref: this._contentRef,\n bindingDefaults: { repeat: true },\n })\n .set(arrowLeft, this._handleArrowKey.bind(this, 'day', -1))\n .set(arrowRight, this._handleArrowKey.bind(this, 'day', 1))\n .set(arrowUp, this._handleArrowKey.bind(this, 'week', -1))\n .set(arrowDown, this._handleArrowKey.bind(this, 'week', 1))\n .set([shiftKey, pageUpKey], this._handleShiftPageKeys.bind(this, -1))\n .set([shiftKey, pageDownKey], this._handleShiftPageKeys.bind(this, 1))\n .set(pageUpKey, this._handlePageKeys.bind(this, -1))\n .set(pageDownKey, this._handlePageKeys.bind(this, 1))\n .set(homeKey, this._handleHomeKey)\n .set(endKey, this._handleEndKey);\n }\n\n //#endregion\n\n //#region Keyboard event handlers\n\n private _shouldSkipKeyboardEvent(_: Element, event: KeyboardEvent): boolean {\n return !getElementFromPath(\n `${IgcDaysViewComponent.tagName}, ${IgcMonthsViewComponent.tagName}, ${IgcYearsViewComponent.tagName}`,\n event\n );\n }\n\n private _handleArrowKey(period: 'day' | 'week', delta: -1 | 1): void {\n if (this._isDayView) {\n const date = this._getNextEnabledDate(\n this._activeDate.add(period, delta),\n delta\n );\n this._updateViewIndex(date, delta);\n this._activeDate = date;\n } else {\n const monthOrYear = this._isMonthView ? 'month' : 'year';\n const monthOrYearDelta =\n (this._isMonthView ? MONTHS_PER_ROW : YEARS_PER_ROW) * delta;\n\n this._activeDate = this._getNextEnabledDate(\n this._activeDate.add(\n monthOrYear,\n period === 'week' ? monthOrYearDelta : delta\n ),\n delta\n );\n }\n\n this[focusActiveDate]();\n }\n\n private _handlePageKeys(delta: -1 | 1): void {\n const { unit, increment } = this._getPageStep(delta);\n\n this._activeDate = this._getNextEnabledDate(\n this._activeDate.add(unit, increment),\n increment\n );\n this[focusActiveDate]();\n }\n\n private _handleShiftPageKeys(delta: -1 | 1): void {\n if (this._isDayView) {\n this._activeDate = this._getNextEnabledDate(\n this._activeDate.add('year', delta),\n delta\n );\n this[focusActiveDate]();\n }\n }\n\n private _handleHomeKey(): void {\n this._activateEdgeOfView('start');\n }\n\n private _handleEndKey(): void {\n this._activateEdgeOfView('end');\n }\n\n /**\n * Moves the active date to the first or the last date of the current view, skipping\n * over the disabled dates towards the middle of it.\n */\n private _activateEdgeOfView(edge: 'start' | 'end'): void {\n const isStart = edge === 'start';\n const delta = isStart ? 1 : -1;\n let target: CalendarDay;\n\n switch (this.activeView) {\n case 'days': {\n const months = this._getActiveDates();\n const index = isStart ? 0 : months.length - 1;\n const month = months[index];\n\n target = isStart\n ? month.set({ date: 1 })\n : month.set({ month: month.month + 1, date: 0 });\n this._activeDaysViewIndex = index;\n break;\n }\n case 'months':\n target = this._activeDate.set({ month: isStart ? 0 : 11 });\n break;\n case 'years': {\n const { start, end } = getYearRange(this._activeDate, YEARS_PER_PAGE);\n target = this._activeDate.set({ year: isStart ? start : end });\n break;\n }\n }\n\n this._activeDate = this._getNextEnabledDate(target, delta);\n this[focusActiveDate]();\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleMonthChange(event: CustomEvent<Date>): void {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'days';\n\n this[focusActiveDate]();\n }\n\n private _handleYearChange(event: CustomEvent<Date>): void {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n private _handleValueChange(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n const selection = selectDate(\n { value: this._value, values: this._values },\n CalendarDay.from(event.detail),\n { selection: this.selection, disabledDates: this._disabledDates }\n );\n\n if (!selection) {\n return;\n }\n\n this._value = selection.value;\n this._values = selection.values;\n\n this.emitEvent('igcChange', {\n detail: this._isSingle ? (this.value as Date) : this.values,\n });\n }\n\n private _handleActiveDateChange(event: CustomEvent<Date>): void {\n const view = event.target as IgcDaysViewComponent;\n const index = Array.from(this._daysViews).indexOf(view);\n\n if (index < 0) {\n return;\n }\n\n // Resolved before the state below is updated, since the dates of the views are\n // derived from it\n const renderedMonth = this._getActiveDates()[index];\n\n this._activeDaysViewIndex = index;\n this.activeDate = event.detail;\n\n // The cell holding the tab stop is about to be replaced, so the focus has to follow\n if (!areSameMonth(this._activeDate, renderedMonth)) {\n this[focusActiveDate]();\n }\n }\n\n private _handleRangePreviewChange(event: CustomEvent<Date>): void {\n this._rangePreviewDate = event.detail\n ? CalendarDay.from(event.detail)\n : undefined;\n }\n\n //#endregion\n\n //#region Internal navigation methods\n\n /** Makes the month rendered by the view at `viewIndex` the active one. */\n private _setActiveDaysView(viewIndex: number): void {\n this.activeDate = this._getActiveDates()[viewIndex].native;\n this._activeDaysViewIndex = viewIndex;\n }\n\n private _navigate(delta: 1 | -1): void {\n const { unit, increment } = this._getPageStep(delta);\n this._activeDate = this._activeDate.add(unit, increment);\n }\n\n private _navigatePrevious(): void {\n this._navigate(-1);\n }\n\n private _navigateNext(): void {\n this._navigate(1);\n }\n\n private _navigateToMonthView(viewIndex: number): void {\n this._setActiveDaysView(viewIndex);\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n private _navigateToYearView(viewIndex: number): void {\n if (this._isDayView) {\n this._setActiveDaysView(viewIndex);\n }\n this.activeView = 'years';\n\n this[focusActiveDate]();\n }\n\n //#endregion\n\n //#region Internal API\n\n /** @hidden @internal */\n public async [focusActiveDate](options?: FocusOptions): Promise<void> {\n await this.updateComplete;\n\n switch (this.activeView) {\n case 'days':\n return this._daysViews\n .item(this._activeDaysViewIndex)\n .focusActiveDate(options);\n case 'months':\n return this._monthsView.focusActiveDate(options);\n case 'years':\n return this._yearsView.focusActiveDate(options);\n }\n }\n\n private _updateViewIndex(date: CalendarDay, delta: -1 | 1): void {\n if (this.visibleMonths === 1) {\n return;\n }\n\n const index = this._activeDaysViewIndex;\n const view = CalendarDay.from(this._daysViews.item(index).activeDate);\n\n if (date.month !== view.month) {\n this._activeDaysViewIndex = clamp(\n index + delta,\n 0,\n this.visibleMonths - 1\n );\n }\n }\n\n private _getActiveDates(): CalendarDay[] {\n const current = this._activeDaysViewIndex;\n const length = Math.max(this.visibleMonths, 1);\n\n return Array.from({ length }, (_, i) =>\n this._activeDate.add('month', i - current)\n );\n }\n\n /**\n * Returns the first enabled date starting from `start` and moving day by day in the\n * direction of `delta`.\n *\n * @remarks\n * The search is bounded, since the disabled dates can describe an open-ended range\n * which no date in the given direction satisfies. The current active date is returned\n * when nothing is reachable.\n */\n private _getNextEnabledDate(start: CalendarDay, delta: number): CalendarDay {\n const disabled = this._disabledDates;\n const step = Math.sign(delta) || 1;\n let current = start;\n\n for (let i = 0; i <= MAX_DISABLED_DATE_SKIP; i++) {\n if (!isDateInRanges(current, disabled)) {\n return current;\n }\n current = current.add('day', step);\n }\n\n return this._activeDate;\n }\n\n //#endregion\n\n protected _renderNavigationButtons() {\n const parts = {\n 'navigation-button': true,\n vertical: this.orientation === 'vertical',\n };\n\n return html`\n <div part=\"navigation-buttons\">\n <button\n part=${partMap(parts)}\n aria-label=${this._getNavigationLabel('previous')}\n @click=${this._navigatePrevious}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_prev\"\n collection=\"default\"\n ></igc-icon>\n </button>\n\n <button\n part=${partMap(parts)}\n aria-label=${this._getNavigationLabel('next')}\n @click=${this._navigateNext}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_next\"\n collection=\"default\"\n ></igc-icon>\n </button>\n </div>\n `;\n }\n\n protected _renderMonthButtonNavigation(\n active: CalendarDay,\n viewIndex: number\n ): TemplateResult {\n const formatter = getDateFormatter();\n const label = formatter.formatDateTime(active.native, this.locale, {\n month: 'long',\n });\n const value = formatter.formatDateTime(active.native, this.locale, {\n month: this.formatOptions.month,\n });\n const ariaLabel = `${label}, ${this.resourceStrings.calendar_select_month}`;\n\n return html`\n <button\n part=\"months-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this._navigateToMonthView(viewIndex)}\n >\n ${value}\n </button>\n `;\n }\n\n protected _renderYearButtonNavigation(\n active: CalendarDay,\n viewIndex: number\n ): TemplateResult {\n const ariaLabel = `${active.year}, ${this.resourceStrings.calendar_select_year}`;\n\n return html`\n <button\n part=\"years-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this._navigateToYearView(viewIndex)}\n >\n ${active.year}\n </button>\n `;\n }\n\n /**\n * Renders the off screen live region announcing the period the calendar navigated to.\n *\n * @remarks\n * A single region for the whole calendar - one per rendered month would announce the\n * same navigation several times over. The years view has its visible years range as a\n * live region of its own.\n */\n protected _renderActivePeriod() {\n if (this._isYearView) {\n return nothing;\n }\n\n const { format } = getDateFormatter().getIntlFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n });\n\n return html`\n <span class=\"aria-off-screen\" aria-live=\"polite\">\n ${this._isDayView ? format(this._activeDate.native) : this._activeDate.year}\n </span>\n `;\n }\n\n protected _renderYearRangeNavigation(active: CalendarDay): TemplateResult {\n const { start, end } = getYearRange(active, YEARS_PER_PAGE);\n\n return html`\n <span part=\"years-range\" aria-live=\"polite\"> ${start} - ${end} </span>\n `;\n }\n\n protected _renderNavigation(\n date?: CalendarDay,\n showButtons = true,\n viewIndex = 0\n ): TemplateResult {\n const activeDate = date ?? this._activeDate;\n\n return html`\n <div part=\"navigation\">\n <div part=\"picker-dates\">\n ${\n this._isDayView\n ? this._renderMonthButtonNavigation(activeDate, viewIndex)\n : nothing\n }\n ${\n this._isDayView || this._isMonthView\n ? this._renderYearButtonNavigation(activeDate, viewIndex)\n : nothing\n }\n ${\n this._isYearView\n ? this._renderYearRangeNavigation(activeDate)\n : nothing\n }\n </div>\n ${showButtons ? this._renderNavigationButtons() : nothing}\n </div>\n `;\n }\n\n protected _renderHeader() {\n if (this.hideHeader || this._isMultiple) {\n return nothing;\n }\n\n const title = this._isSingle\n ? this.resourceStrings.calendar_select_date\n : this.resourceStrings.calendar_range_placeholder;\n\n // A label and the value it describes, not a section of the document, so no headings -\n // a component cannot know which level would fit the page it is placed in. The\n // typography of both parts is set by the themes.\n return html`\n <div part=\"header\">\n <div part=\"header-title\">\n <slot name=\"title\">${title}</slot>\n </div>\n <div part=\"header-date\">${this._renderHeaderDate()}</div>\n </div>\n `;\n }\n\n protected _renderHeaderDateSingle(): TemplateResult {\n const date = this.value ?? CalendarDay.today.native;\n const formatter = getDateFormatter();\n const weekday = formatter.formatDateTime(date, this.locale, {\n weekday: 'short',\n });\n const monthDay = formatter.formatDateTime(date, this.locale, {\n month: 'short',\n day: 'numeric',\n });\n const separator =\n this.headerOrientation === 'vertical' ? html`<br />` : ' ';\n\n const formatted = html`${weekday},${separator}${monthDay}`;\n\n return html`<slot name=\"header-date\">${formatted}</slot>`;\n }\n\n protected _renderHeaderDateRange(): TemplateResult {\n const values = this.values;\n const { format } = getDateFormatter().getIntlFormatter(this.locale, {\n month: 'short',\n day: 'numeric',\n });\n const { calendar_range_label_start, calendar_range_label_end } =\n this.resourceStrings;\n\n const start = this._hasValues\n ? format(firstOf(values))\n : calendar_range_label_start;\n const end =\n this._hasValues && values.length > 1\n ? format(lastOf(values))\n : calendar_range_label_end;\n\n return html`\n <slot name=\"header-date\">\n <span>${start}</span>\n <span> - </span>\n <span>${end}</span>\n </slot>\n `;\n }\n\n protected _renderHeaderDate(): TemplateResult {\n return this._isSingle\n ? this._renderHeaderDateSingle()\n : this._renderHeaderDateRange();\n }\n\n protected _renderDaysView(): TemplateResult {\n const activeDates = this._getActiveDates();\n const horizontal = this.orientation === 'horizontal';\n const length = activeDates.length - 1;\n const format = this.formatOptions\n .weekday as Intl.DateTimeFormatOptions['weekday'];\n\n return html`${activeDates.map(\n (date, idx) => html`\n <div part=\"days-view-container\">\n ${this._renderNavigation(\n date,\n horizontal ? idx === length : idx === 0,\n idx\n )}\n <igc-days-view\n @igcChange=${this._handleValueChange}\n @igcActiveDateChange=${this._handleActiveDateChange}\n @igcRangePreviewDateChange=${this._handleRangePreviewChange}\n part=\"days-view\"\n exportparts=\"days-row, label, label-inner, date-inner, week-number-inner, week-number, date, first, last, selected, inactive, hidden, current, content-vertical, weekend, range, special, disabled, single, preview\"\n .active=${this._activeDaysViewIndex === idx}\n .activeDate=${date.native}\n .disabledDates=${this.disabledDates}\n .hideLeadingDays=${this.hideOutsideDays || idx !== 0}\n .hideTrailingDays=${this.hideOutsideDays || idx !== length}\n .locale=${this.locale}\n .rangePreviewDate=${this._rangePreviewDate?.native}\n .resourceStrings=${this.resourceStrings}\n .selection=${this.selection}\n .showWeekNumbers=${this.showWeekNumbers}\n .specialDates=${this._specialDates}\n .value=${this.value}\n .values=${this.values}\n .weekDayFormat=${format!}\n .weekStart=${this.weekStart}\n ></igc-days-view>\n </div>\n `\n )}`;\n }\n\n protected _renderMonthView(): TemplateResult {\n const format = this.formatOptions\n .month as Intl.DateTimeFormatOptions['month'];\n\n return html`\n ${this._renderNavigation()}\n <igc-months-view\n part=\"months-view\"\n exportparts=\"months-row, month, selected, month-inner, current\"\n @igcChange=${this._handleMonthChange}\n .value=${this.activeDate}\n .locale=${this.locale}\n .monthFormat=${format!}\n ></igc-months-view>\n `;\n }\n\n protected _renderYearView(): TemplateResult {\n return html`\n ${this._renderNavigation()}\n <igc-years-view\n part=\"years-view\"\n exportparts=\"years-row, year, selected, year-inner, current\"\n @igcChange=${this._handleYearChange}\n .value=${this.activeDate}\n .yearsPerPage=${YEARS_PER_PAGE}\n ></igc-years-view>\n `;\n }\n\n protected override render() {\n const parts = {\n content: true,\n 'content-vertical': this._isDayView && this.orientation === 'vertical',\n };\n\n return html`\n ${this._renderHeader()} ${this._renderActivePeriod()}\n <div ${ref(this._contentRef)} part=${partMap(parts)}>\n ${choose(this.activeView, [\n ['days', () => this._renderDaysView()],\n ['months', () => this._renderMonthView()],\n ['years', () => this._renderYearView()],\n ])}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-calendar': IgcCalendarComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/components/calendar/calendar.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n pageDownKey,\n pageUpKey,\n shiftKey,\n} from '#internals/controllers/key-bindings.js';\nimport { CalendarDay } from '#internals/date/model.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { firstOf, lastOf } from '#internals/utils/arrays.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { clamp } from '#internals/utils/math.js';\nimport { formatString } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type { ContentOrientation } from '../types.js';\nimport { IgcCalendarBaseComponent } from './base.js';\nimport IgcDaysViewComponent from './days-view/days-view.js';\nimport {\n areSameMonth,\n getYearRange,\n isDateInRanges,\n isDatePartBefore,\n MONTHS_PER_ROW,\n YEARS_PER_PAGE,\n YEARS_PER_ROW,\n} from './helpers.js';\nimport IgcMonthsViewComponent from './months-view/months-view.js';\nimport { selectDate } from './selection.js';\nimport { styles } from './themes/calendar.base.css.js';\nimport { all } from './themes/calendar.js';\nimport type {\n CalendarActiveView,\n CalendarHeaderOrientation,\n IgcCalendarComponentEventMap,\n} from './types.js';\nimport IgcYearsViewComponent from './years-view/years-view.js';\n\nexport const focusActiveDate = Symbol();\n\n/** How many consecutive disabled days keyboard navigation will skip over before giving up. */\nconst MAX_DISABLED_DATE_SKIP = 1000;\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * Represents a calendar that lets users\n * to select a date value in a variety of different ways.\n *\n * @element igc-calendar\n *\n * @slot - The default slot for the calendar.\n * @slot title - Renders the title of the calendar header.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n *\n * @fires igcChange - Emitted when calendar changes its value.\n *\n * @csspart header - The header element of the calendar.\n * @csspart header-title - The header title element of the calendar.\n * @csspart header-date - The header date element of the calendar.\n * @csspart content - The content element which contains the views and navigation elements of the calendar.\n * @csspart content-vertical - The content element which contains the views and navigation elements of the calendar in vertical orientation.\n * @csspart navigation - The navigation container element of the calendar.\n * @csspart months-navigation - The months navigation button element of the calendar.\n * @csspart years-navigation - The years navigation button element of the calendar.\n * @csspart years-range - The years range element of the calendar.\n * @csspart navigation-buttons - The navigation buttons container of the calendar.\n * @csspart navigation-button - Previous/next navigation button of the calendar.\n * @csspart days-view-container - The days view container element of the calendar.\n * @csspart days-view - Days view element of the calendar.\n * @csspart months-view - The months view element of the calendar.\n * @csspart years-view - The years view element of the calendar.\n * @csspart days-row - Days row element of the calendar.\n * @csspart months-row - Months row element of the calendar.\n * @csspart years-row - Years row element of the calendar.\n * @csspart label - Week header label element of the calendar.\n * @csspart label-inner - Week header label inner element of the calendar.\n * @csspart week-number - Week number element of the calendar.\n * @csspart week-number-inner - Week number inner element of the calendar.\n * @csspart date - Date element of the calendar.\n * @csspart date-inner - Date inner element of the calendar.\n * @csspart first - The first selected date element of the calendar in range selection.\n * Also applies to the week numbers header cell.\n * @csspart last - The last selected date element of the calendar in range selection.\n * Also applies to the week number of the last rendered week.\n * @csspart inactive - Inactive date element of the calendar.\n * @csspart hidden - Hidden date element of the calendar.\n * @csspart weekend - Weekend date element of the calendar.\n * @csspart range - Range selected element of the calendar.\n * @csspart special - Special date element of the calendar.\n * @csspart disabled - Disabled date element of the calendar.\n * @csspart single - Single selected date element of the calendar.\n * @csspart preview - Range selection preview date element of the calendar.\n * @csspart month - Month element of the calendar.\n * @csspart month-inner - Month inner element of the calendar.\n * @csspart year - Year element of the calendar.\n * @csspart year-inner - Year inner element of the calendar.\n * @csspart selected - Indicates selected state. Applies to date, month and year elements of the calendar.\n * @csspart current - Indicates current state. Applies to date, month and year elements of the calendar.\n */\nexport default class IgcCalendarComponent extends EventEmitterMixin<\n IgcCalendarComponentEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-calendar';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcCalendarComponent,\n IgcIconComponent,\n IgcDaysViewComponent,\n IgcMonthsViewComponent,\n IgcYearsViewComponent\n );\n }\n\n //#region Internal state\n\n private readonly _contentRef = createRef<HTMLDivElement>();\n\n private get _isDayView(): boolean {\n return this.activeView === 'days';\n }\n\n private get _isMonthView(): boolean {\n return this.activeView === 'months';\n }\n\n private get _isYearView(): boolean {\n return this.activeView === 'years';\n }\n\n /** The accessible name of a navigation button, based on what it pages through. */\n private _getNavigationLabel(direction: 'previous' | 'next'): string {\n const isPrevious = direction === 'previous';\n const strings = this.resourceStrings;\n\n switch (this.activeView) {\n case 'days':\n return (\n isPrevious\n ? strings.calendar_previous_month\n : strings.calendar_next_month\n )!;\n case 'months':\n return (\n isPrevious\n ? strings.calendar_previous_year\n : strings.calendar_next_year\n )!;\n case 'years':\n return formatString(\n (isPrevious\n ? strings.calendar_previous_years\n : strings.calendar_next_years)!,\n YEARS_PER_PAGE\n );\n }\n }\n\n /** The unit and the amount a single navigation step covers in the current view. */\n private _getPageStep(delta: -1 | 1): {\n unit: 'month' | 'year';\n increment: number;\n } {\n return {\n unit: this._isDayView ? 'month' : 'year',\n increment: (this._isYearView ? YEARS_PER_PAGE : 1) * delta,\n };\n }\n\n @state()\n private _activeDaysViewIndex = 0;\n\n @queryAll(IgcDaysViewComponent.tagName)\n private readonly _daysViews!: NodeListOf<IgcDaysViewComponent>;\n\n @query(IgcMonthsViewComponent.tagName)\n private readonly _monthsView!: IgcMonthsViewComponent;\n\n @query(IgcYearsViewComponent.tagName)\n private readonly _yearsView!: IgcYearsViewComponent;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Whether to hide the dates that do not belong to the current active month.\n * @attr hide-outside-days\n * @default false\n */\n @property({ type: Boolean, attribute: 'hide-outside-days', reflect: true })\n public hideOutsideDays = false;\n\n /**\n * Whether to render the calendar header part.\n * When the calendar selection is set to `multiple` the header is always hidden.\n *\n * @attr hide-header\n * @default false\n */\n @property({ type: Boolean, attribute: 'hide-header', reflect: true })\n public hideHeader = false;\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n * @default \"horizontal\"\n */\n @property({ reflect: true, attribute: 'header-orientation' })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the calendar months when more than one month\n * is being shown.\n * @attr orientation\n * @default \"horizontal\"\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * The number of months displayed in the days view.\n * @attr visible-months\n * @default 1\n */\n @property({ type: Number, attribute: 'visible-months' })\n public visibleMonths = 1;\n\n /**\n * The current active view of the component.\n * @attr active-view\n * @default \"days\"\n */\n @property({ attribute: 'active-view' })\n public activeView: CalendarActiveView = 'days';\n\n /** The options used to format the months and the weekdays in the calendar views. */\n @property({ attribute: false })\n public formatOptions: Pick<Intl.DateTimeFormatOptions, 'month' | 'weekday'> =\n { month: 'long', weekday: 'narrow' };\n\n //#endregion\n\n //#region Lifecycle hooks\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addKeybindings(this, {\n skip: this._shouldSkipKeyboardEvent,\n ref: this._contentRef,\n bindingDefaults: { repeat: true },\n })\n .set(arrowLeft, this._handleArrowKey.bind(this, 'day', -1))\n .set(arrowRight, this._handleArrowKey.bind(this, 'day', 1))\n .set(arrowUp, this._handleArrowKey.bind(this, 'week', -1))\n .set(arrowDown, this._handleArrowKey.bind(this, 'week', 1))\n .set([shiftKey, pageUpKey], this._handleShiftPageKeys.bind(this, -1))\n .set([shiftKey, pageDownKey], this._handleShiftPageKeys.bind(this, 1))\n .set(pageUpKey, this._handlePageKeys.bind(this, -1))\n .set(pageDownKey, this._handlePageKeys.bind(this, 1))\n .set(homeKey, this._handleHomeKey)\n .set(endKey, this._handleEndKey);\n }\n\n //#endregion\n\n //#region Keyboard event handlers\n\n private _shouldSkipKeyboardEvent(_: Element, event: KeyboardEvent): boolean {\n return !getElementFromPath(\n `${IgcDaysViewComponent.tagName}, ${IgcMonthsViewComponent.tagName}, ${IgcYearsViewComponent.tagName}`,\n event\n );\n }\n\n private _handleArrowKey(period: 'day' | 'week', delta: -1 | 1): void {\n if (this._isDayView) {\n const date = this._getNextEnabledDate(\n this._activeDate.add(period, delta),\n delta\n );\n this._updateViewIndex(date, delta);\n this._activeDate = date;\n } else {\n const monthOrYear = this._isMonthView ? 'month' : 'year';\n const monthOrYearDelta =\n (this._isMonthView ? MONTHS_PER_ROW : YEARS_PER_ROW) * delta;\n\n this._activeDate = this._getNextEnabledDate(\n this._activeDate.add(\n monthOrYear,\n period === 'week' ? monthOrYearDelta : delta\n ),\n delta\n );\n }\n\n this[focusActiveDate]();\n }\n\n private _handlePageKeys(delta: -1 | 1): void {\n const { unit, increment } = this._getPageStep(delta);\n\n this._activeDate = this._getNextEnabledDate(\n this._activeDate.add(unit, increment),\n increment\n );\n this[focusActiveDate]();\n }\n\n private _handleShiftPageKeys(delta: -1 | 1): void {\n if (this._isDayView) {\n this._activeDate = this._getNextEnabledDate(\n this._activeDate.add('year', delta),\n delta\n );\n this[focusActiveDate]();\n }\n }\n\n private _handleHomeKey(): void {\n this._activateEdgeOfView('start');\n }\n\n private _handleEndKey(): void {\n this._activateEdgeOfView('end');\n }\n\n /**\n * Moves the active date to the first or the last date of the current view, skipping\n * over the disabled dates towards the middle of it.\n */\n private _activateEdgeOfView(edge: 'start' | 'end'): void {\n const isStart = edge === 'start';\n const delta = isStart ? 1 : -1;\n let target: CalendarDay;\n\n switch (this.activeView) {\n case 'days': {\n const months = this._getActiveDates();\n const index = isStart ? 0 : months.length - 1;\n const month = months[index];\n\n target = isStart\n ? month.set({ date: 1 })\n : month.set({ month: month.month + 1, date: 0 });\n this._activeDaysViewIndex = index;\n break;\n }\n case 'months':\n target = this._activeDate.set({ month: isStart ? 0 : 11 });\n break;\n case 'years': {\n const { start, end } = getYearRange(this._activeDate, YEARS_PER_PAGE);\n target = this._activeDate.set({ year: isStart ? start : end });\n break;\n }\n }\n\n this._activeDate = this._getNextEnabledDate(target, delta);\n this[focusActiveDate]();\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleMonthChange(event: CustomEvent<Date>): void {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'days';\n\n this[focusActiveDate]();\n }\n\n private _handleYearChange(event: CustomEvent<Date>): void {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n private _handleValueChange(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n const selection = selectDate(\n { value: this._value, values: this._values },\n CalendarDay.from(event.detail),\n { selection: this.selection, disabledDates: this._disabledDates }\n );\n\n if (!selection) {\n return;\n }\n\n this._value = selection.value;\n this._values = selection.values;\n\n this.emitEvent('igcChange', {\n detail: this._isSingle ? (this.value as Date) : this.values,\n });\n }\n\n private _handleActiveDateChange(event: CustomEvent<Date>): void {\n const view = event.target as IgcDaysViewComponent;\n const index = Array.from(this._daysViews).indexOf(view);\n\n if (index < 0) {\n return;\n }\n\n // Resolved before the state below is updated, since the dates of the views are\n // derived from it\n const renderedMonth = this._getActiveDates()[index];\n\n this._activeDaysViewIndex = index;\n this.activeDate = event.detail;\n\n // The cell holding the tab stop is about to be replaced, so the focus has to follow\n if (!areSameMonth(this._activeDate, renderedMonth)) {\n this[focusActiveDate]();\n }\n }\n\n private _handleRangePreviewChange(event: CustomEvent<Date>): void {\n this._rangePreviewDate = event.detail\n ? CalendarDay.from(event.detail)\n : undefined;\n }\n\n //#endregion\n\n //#region Internal navigation methods\n\n /** Makes the month rendered by the view at `viewIndex` the active one. */\n private _setActiveDaysView(viewIndex: number): void {\n this.activeDate = this._getActiveDates()[viewIndex].native;\n this._activeDaysViewIndex = viewIndex;\n }\n\n private _navigate(delta: 1 | -1): void {\n const { unit, increment } = this._getPageStep(delta);\n this._activeDate = this._activeDate.add(unit, increment);\n }\n\n private _navigatePrevious(): void {\n this._navigate(-1);\n }\n\n private _navigateNext(): void {\n this._navigate(1);\n }\n\n private _navigateToMonthView(viewIndex: number): void {\n this._setActiveDaysView(viewIndex);\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n private _navigateToYearView(viewIndex: number): void {\n if (this._isDayView) {\n this._setActiveDaysView(viewIndex);\n }\n this.activeView = 'years';\n\n this[focusActiveDate]();\n }\n\n //#endregion\n\n //#region Internal API\n\n /** @hidden @internal */\n public async [focusActiveDate](options?: FocusOptions): Promise<void> {\n await this.updateComplete;\n\n switch (this.activeView) {\n case 'days':\n return this._daysViews\n .item(this._activeDaysViewIndex)\n .focusActiveDate(options);\n case 'months':\n return this._monthsView.focusActiveDate(options);\n case 'years':\n return this._yearsView.focusActiveDate(options);\n }\n }\n\n private _updateViewIndex(date: CalendarDay, delta: -1 | 1): void {\n if (this.visibleMonths === 1) {\n return;\n }\n\n const index = this._activeDaysViewIndex;\n const view = CalendarDay.from(this._daysViews.item(index).activeDate);\n\n if (date.month !== view.month) {\n this._activeDaysViewIndex = clamp(\n index + delta,\n 0,\n this.visibleMonths - 1\n );\n }\n }\n\n private _getActiveDates(): CalendarDay[] {\n const current = this._activeDaysViewIndex;\n const length = Math.max(this.visibleMonths, 1);\n\n return Array.from({ length }, (_, i) =>\n this._activeDate.add('month', i - current)\n );\n }\n\n /**\n * Returns the first enabled date starting from `start` and moving day by day in the\n * direction of `delta`.\n *\n * @remarks\n * The search is bounded, since the disabled dates can describe an open-ended range\n * which no date in the given direction satisfies. The current active date is returned\n * when nothing is reachable.\n */\n private _getNextEnabledDate(start: CalendarDay, delta: number): CalendarDay {\n const disabled = this._disabledDates;\n const step = Math.sign(delta) || 1;\n let current = start;\n\n for (let i = 0; i <= MAX_DISABLED_DATE_SKIP; i++) {\n if (!isDateInRanges(current, disabled)) {\n return current;\n }\n current = current.add('day', step);\n }\n\n return this._activeDate;\n }\n\n //#endregion\n\n protected _renderNavigationButtons() {\n const parts = {\n 'navigation-button': true,\n vertical: this.orientation === 'vertical',\n };\n\n return html`\n <div part=\"navigation-buttons\">\n <button\n part=${partMap(parts)}\n aria-label=${this._getNavigationLabel('previous')}\n @click=${this._navigatePrevious}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_prev\"\n collection=\"default\"\n ></igc-icon>\n </button>\n\n <button\n part=${partMap(parts)}\n aria-label=${this._getNavigationLabel('next')}\n @click=${this._navigateNext}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_next\"\n collection=\"default\"\n ></igc-icon>\n </button>\n </div>\n `;\n }\n\n protected _renderMonthButtonNavigation(\n active: CalendarDay,\n viewIndex: number\n ): TemplateResult {\n const formatter = getDateFormatter();\n const label = formatter.formatDateTime(active.native, this.locale, {\n month: 'long',\n });\n const value = formatter.formatDateTime(active.native, this.locale, {\n month: this.formatOptions.month,\n });\n const ariaLabel = `${label}, ${this.resourceStrings.calendar_select_month}`;\n\n return html`\n <button\n part=\"months-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this._navigateToMonthView(viewIndex)}\n >\n ${value}\n </button>\n `;\n }\n\n /** The year with the unit of the locale - `2025年` for `ja`, `2025 г.` for `bg`. */\n protected _formatYear(day: CalendarDay): string {\n return getDateFormatter().formatDateTime(day.native, this.locale, {\n year: 'numeric',\n });\n }\n\n protected _renderYearButtonNavigation(\n active: CalendarDay,\n viewIndex: number\n ): TemplateResult {\n const year = this._formatYear(active);\n const ariaLabel = `${year}, ${this.resourceStrings.calendar_select_year}`;\n\n return html`\n <button\n part=\"years-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this._navigateToYearView(viewIndex)}\n >\n ${year}\n </button>\n `;\n }\n\n /**\n * Renders the off screen live region announcing the period the calendar navigated to.\n *\n * @remarks\n * A single region for the whole calendar - one per rendered month would announce the\n * same navigation several times over. The years view has its visible years range as a\n * live region of its own.\n */\n protected _renderActivePeriod() {\n if (this._isYearView) {\n return nothing;\n }\n\n const { format } = getDateFormatter().getIntlFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n });\n\n return html`\n <span class=\"aria-off-screen\" aria-live=\"polite\">\n ${this._isDayView ? format(this._activeDate.native) : this._formatYear(this._activeDate)}\n </span>\n `;\n }\n\n protected _renderYearRangeNavigation(active: CalendarDay): TemplateResult {\n const { start, end } = getYearRange(active, YEARS_PER_PAGE);\n\n return html`\n <span part=\"years-range\" aria-live=\"polite\"> ${start} - ${end} </span>\n `;\n }\n\n /** Renders the month and year buttons of the days view in the field order of the locale. */\n protected _renderDayViewNavigation(\n active: CalendarDay,\n viewIndex: number\n ): TemplateResult[] {\n const parts = getDateFormatter().formatDateTimeToParts(\n active.native,\n this.locale,\n { year: 'numeric', month: this.formatOptions.month }\n );\n const yearFirst = isDatePartBefore(parts, 'year', 'month');\n\n const month = this._renderMonthButtonNavigation(active, viewIndex);\n const year = this._renderYearButtonNavigation(active, viewIndex);\n\n return yearFirst ? [year, month] : [month, year];\n }\n\n protected _renderNavigation(\n date?: CalendarDay,\n showButtons = true,\n viewIndex = 0\n ): TemplateResult {\n const activeDate = date ?? this._activeDate;\n\n return html`\n <div part=\"navigation\">\n <div part=\"picker-dates\">\n ${\n this._isDayView\n ? this._renderDayViewNavigation(activeDate, viewIndex)\n : nothing\n }\n ${\n this._isMonthView\n ? this._renderYearButtonNavigation(activeDate, viewIndex)\n : nothing\n }\n ${\n this._isYearView\n ? this._renderYearRangeNavigation(activeDate)\n : nothing\n }\n </div>\n ${showButtons ? this._renderNavigationButtons() : nothing}\n </div>\n `;\n }\n\n protected _renderHeader() {\n if (this.hideHeader || this._isMultiple) {\n return nothing;\n }\n\n const title = this._isSingle\n ? this.resourceStrings.calendar_select_date\n : this.resourceStrings.calendar_range_placeholder;\n\n // A label and the value it describes, not a section of the document, so no headings -\n // a component cannot know which level would fit the page it is placed in. The\n // typography of both parts is set by the themes.\n return html`\n <div part=\"header\">\n <div part=\"header-title\">\n <slot name=\"title\">${title}</slot>\n </div>\n <div part=\"header-date\">${this._renderHeaderDate()}</div>\n </div>\n `;\n }\n\n protected _renderHeaderDateSingle(): TemplateResult {\n const date = this.value ?? CalendarDay.today.native;\n const { locale } = this;\n const formatter = getDateFormatter();\n const weekdayOptions: Intl.DateTimeFormatOptions = { weekday: 'short' };\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: 'short',\n day: 'numeric',\n };\n\n if (this.headerOrientation !== 'vertical') {\n const formatted = formatter.formatDateTime(date, locale, {\n ...weekdayOptions,\n ...dateOptions,\n });\n return html`<slot name=\"header-date\">${formatted}</slot>`;\n }\n\n // The weekday and the month/day on separate lines, in the field order of the locale\n const parts = formatter.formatDateTimeToParts(date, locale, {\n ...weekdayOptions,\n ...dateOptions,\n });\n const weekday = formatter.formatDateTime(date, locale, weekdayOptions);\n const monthDay = formatter.formatDateTime(date, locale, dateOptions);\n const [first, second] = isDatePartBefore(parts, 'weekday', 'month')\n ? [weekday, monthDay]\n : [monthDay, weekday];\n\n return html`<slot name=\"header-date\">${first}<br />${second}</slot>`;\n }\n\n protected _renderHeaderDateRange(): TemplateResult {\n const values = this.values;\n const { format } = getDateFormatter().getIntlFormatter(this.locale, {\n month: 'short',\n day: 'numeric',\n });\n const { calendar_range_label_start, calendar_range_label_end } =\n this.resourceStrings;\n\n const start = this._hasValues\n ? format(firstOf(values))\n : calendar_range_label_start;\n const end =\n this._hasValues && values.length > 1\n ? format(lastOf(values))\n : calendar_range_label_end;\n\n return html`\n <slot name=\"header-date\">\n <span>${start}</span>\n <span> - </span>\n <span>${end}</span>\n </slot>\n `;\n }\n\n protected _renderHeaderDate(): TemplateResult {\n return this._isSingle\n ? this._renderHeaderDateSingle()\n : this._renderHeaderDateRange();\n }\n\n protected _renderDaysView(): TemplateResult {\n const activeDates = this._getActiveDates();\n const horizontal = this.orientation === 'horizontal';\n const length = activeDates.length - 1;\n const format = this.formatOptions\n .weekday as Intl.DateTimeFormatOptions['weekday'];\n const weekStart = this.weekStart;\n\n return html`${activeDates.map(\n (date, idx) => html`\n <div part=\"days-view-container\">\n ${this._renderNavigation(\n date,\n horizontal ? idx === length : idx === 0,\n idx\n )}\n <igc-days-view\n @igcChange=${this._handleValueChange}\n @igcActiveDateChange=${this._handleActiveDateChange}\n @igcRangePreviewDateChange=${this._handleRangePreviewChange}\n part=\"days-view\"\n exportparts=\"days-row, label, label-inner, date-inner, week-number-inner, week-number, date, first, last, selected, inactive, hidden, current, content-vertical, weekend, range, special, disabled, single, preview\"\n .active=${this._activeDaysViewIndex === idx}\n .activeDate=${date.native}\n .disabledDates=${this.disabledDates}\n .hideLeadingDays=${this.hideOutsideDays || idx !== 0}\n .hideTrailingDays=${this.hideOutsideDays || idx !== length}\n .locale=${this.locale}\n .rangePreviewDate=${this._rangePreviewDate?.native}\n .resourceStrings=${this.resourceStrings}\n .selection=${this.selection}\n .showWeekNumbers=${this.showWeekNumbers}\n .specialDates=${this._specialDates}\n .value=${this.value}\n .values=${this.values}\n .weekDayFormat=${format!}\n .weekStart=${weekStart}\n ></igc-days-view>\n </div>\n `\n )}`;\n }\n\n protected _renderMonthView(): TemplateResult {\n const format = this.formatOptions\n .month as Intl.DateTimeFormatOptions['month'];\n\n return html`\n ${this._renderNavigation()}\n <igc-months-view\n part=\"months-view\"\n exportparts=\"months-row, month, selected, month-inner, current\"\n @igcChange=${this._handleMonthChange}\n .value=${this.activeDate}\n .locale=${this.locale}\n .monthFormat=${format!}\n ></igc-months-view>\n `;\n }\n\n protected _renderYearView(): TemplateResult {\n return html`\n ${this._renderNavigation()}\n <igc-years-view\n part=\"years-view\"\n exportparts=\"years-row, year, selected, year-inner, current\"\n @igcChange=${this._handleYearChange}\n .value=${this.activeDate}\n .yearsPerPage=${YEARS_PER_PAGE}\n ></igc-years-view>\n `;\n }\n\n protected override render() {\n const parts = {\n content: true,\n 'content-vertical': this._isDayView && this.orientation === 'vertical',\n };\n\n return html`\n ${this._renderHeader()} ${this._renderActivePeriod()}\n <div ${ref(this._contentRef)} part=${partMap(parts)}>\n ${choose(this.activeView, [\n ['days', () => this._renderDaysView()],\n ['months', () => this._renderMonthView()],\n ['years', () => this._renderYearView()],\n ])}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-calendar': IgcCalendarComponent;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
2
|
import { CalendarDay } from '#internals/date/model.js';
|
|
3
3
|
import type { Constructor } from '#internals/mixins/constructor.js';
|
|
4
4
|
import { IgcCalendarBaseComponent } from '../base.js';
|
|
@@ -63,7 +63,6 @@ export default class IgcDaysViewComponent extends IgcDaysViewComponent_base {
|
|
|
63
63
|
static readonly tagName = "igc-days-view";
|
|
64
64
|
static styles: import("lit").CSSResult;
|
|
65
65
|
static register(): void;
|
|
66
|
-
private _dates;
|
|
67
66
|
private _activeDay?;
|
|
68
67
|
private get _rangeStart();
|
|
69
68
|
private get _rangeEnd();
|
|
@@ -97,8 +96,6 @@ export default class IgcDaysViewComponent extends IgcDaysViewComponent_base {
|
|
|
97
96
|
*/
|
|
98
97
|
weekDayFormat: 'long' | 'short' | 'narrow';
|
|
99
98
|
constructor();
|
|
100
|
-
/** @internal */
|
|
101
|
-
protected update(props: PropertyValues): void;
|
|
102
99
|
protected _handleInteraction(event: Event): void;
|
|
103
100
|
/**
|
|
104
101
|
* Applies the activation of `value` to the selection of this view.
|
|
@@ -123,8 +120,8 @@ export default class IgcDaysViewComponent extends IgcDaysViewComponent_base {
|
|
|
123
120
|
protected _renderDayWithProps(day: CalendarDay, props: DayProperties, context: DayRenderContext): TemplateResult;
|
|
124
121
|
protected _renderHeaderWeekNumber(): TemplateResult<1>;
|
|
125
122
|
protected _renderWeekNumber(start: CalendarDay, last: boolean): TemplateResult<1>;
|
|
126
|
-
protected _renderHeaders(): TemplateResult<1>;
|
|
127
|
-
protected _renderWeeks(): Generator<TemplateResult>;
|
|
123
|
+
protected _renderHeaders(dates: CalendarDay[]): TemplateResult<1>;
|
|
124
|
+
protected _renderWeeks(dates: CalendarDay[]): Generator<TemplateResult>;
|
|
128
125
|
protected render(): TemplateResult<1>;
|
|
129
126
|
}
|
|
130
127
|
declare global {
|
|
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var IgcDaysViewComponent_1;
|
|
8
8
|
import { getDateFormatter, getDisplayNamesFormatter } from 'igniteui-i18n-core';
|
|
9
9
|
import { html, nothing } from 'lit';
|
|
10
|
-
import { property, query
|
|
10
|
+
import { property, query } from 'lit/decorators.js';
|
|
11
11
|
import { addInternalsController } from '#internals/controllers/internals.js';
|
|
12
12
|
import { addKeybindings } from '#internals/controllers/key-bindings.js';
|
|
13
13
|
import { CalendarDay, DAYS_IN_WEEK } from '#internals/date/model.js';
|
|
@@ -59,7 +59,6 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
|
|
|
59
59
|
}
|
|
60
60
|
constructor() {
|
|
61
61
|
super();
|
|
62
|
-
this._dates = [];
|
|
63
62
|
this.active = true;
|
|
64
63
|
this.hideLeadingDays = false;
|
|
65
64
|
this.hideTrailingDays = false;
|
|
@@ -72,12 +71,6 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
|
|
|
72
71
|
addKeybindings(this).setActivateHandler(this._handleInteraction);
|
|
73
72
|
addSafeEventListener(this, 'click', this._handleInteraction);
|
|
74
73
|
}
|
|
75
|
-
update(props) {
|
|
76
|
-
if (props.has('_activeDate') || props.has('weekStart')) {
|
|
77
|
-
this._dates = Array.from(generateMonth(this._activeDate, this._firstDayOfWeek));
|
|
78
|
-
}
|
|
79
|
-
super.update(props);
|
|
80
|
-
}
|
|
81
74
|
_handleInteraction(event) {
|
|
82
75
|
const value = getViewElement(event);
|
|
83
76
|
if (value !== -1) {
|
|
@@ -245,7 +238,7 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
|
|
|
245
238
|
</span>
|
|
246
239
|
`;
|
|
247
240
|
}
|
|
248
|
-
_renderHeaders() {
|
|
241
|
+
_renderHeaders(dates) {
|
|
249
242
|
const label = getDateFormatter().getIntlFormatter(this.locale, {
|
|
250
243
|
weekday: this.weekDayFormat,
|
|
251
244
|
});
|
|
@@ -255,7 +248,7 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
|
|
|
255
248
|
const weekNumber = this.showWeekNumbers
|
|
256
249
|
? this._renderHeaderWeekNumber()
|
|
257
250
|
: nothing;
|
|
258
|
-
const headers =
|
|
251
|
+
const headers = dates.slice(0, DAYS_IN_WEEK).map((day) => html `
|
|
259
252
|
<span
|
|
260
253
|
role="columnheader"
|
|
261
254
|
part="label"
|
|
@@ -268,9 +261,9 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
|
|
|
268
261
|
<div role="row" part="days-row first">${weekNumber}${headers}</div>
|
|
269
262
|
`;
|
|
270
263
|
}
|
|
271
|
-
*_renderWeeks() {
|
|
264
|
+
*_renderWeeks(dates) {
|
|
272
265
|
const context = this._createRenderContext();
|
|
273
|
-
const weeks = Array.from(chunk(
|
|
266
|
+
const weeks = Array.from(chunk(dates, DAYS_IN_WEEK));
|
|
274
267
|
const lastIndex = weeks.length - 1;
|
|
275
268
|
for (const [idx, week] of weeks.entries()) {
|
|
276
269
|
const isLast = idx === lastIndex;
|
|
@@ -287,12 +280,10 @@ let IgcDaysViewComponent = class IgcDaysViewComponent extends EventEmitterMixin(
|
|
|
287
280
|
}
|
|
288
281
|
}
|
|
289
282
|
render() {
|
|
290
|
-
|
|
283
|
+
const dates = Array.from(generateMonth(this._activeDate, this._firstDayOfWeek));
|
|
284
|
+
return html `${this._renderHeaders(dates)}${this._renderWeeks(dates)}`;
|
|
291
285
|
}
|
|
292
286
|
};
|
|
293
|
-
__decorate([
|
|
294
|
-
state()
|
|
295
|
-
], IgcDaysViewComponent.prototype, "_dates", void 0);
|
|
296
287
|
__decorate([
|
|
297
288
|
query('[tabindex="0"]')
|
|
298
289
|
], IgcDaysViewComponent.prototype, "_activeDay", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"days-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/days-view/days-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter, getDisplayNamesFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport { addKeybindings } from '#internals/controllers/key-bindings.js';\nimport { CalendarDay, DAYS_IN_WEEK } from '#internals/date/model.js';\nimport { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '#internals/decorators/blazorSuppressComponent.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { chunk, firstOf, lastOf } from '#internals/utils/arrays.js';\nimport { addSafeEventListener } from '#internals/utils/events.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport { IgcCalendarBaseComponent } from '../base.js';\nimport {\n areSameMonth,\n generateMonth,\n getViewElement,\n isDateInRanges,\n isNextMonth,\n isPreviousMonth,\n} from '../helpers.js';\nimport { selectDate } from '../selection.js';\nimport { styles } from '../themes/days-view.base.css.js';\nimport { all } from '../themes/days.js';\nimport type { IgcCalendarViewComponentEventMap } from '../types.js';\n\nexport interface IgcDaysViewEventMap extends IgcCalendarViewComponentEventMap {\n igcActiveDateChange: CustomEvent<Date>;\n igcRangePreviewDateChange: CustomEvent<Date>;\n}\n\n/** Inclusive timestamp bounds of a range of days. */\ninterface DayBounds {\n min: number;\n max: number;\n}\n\n/** State derived once per render pass and shared by every day cell. */\ninterface DayRenderContext {\n today: CalendarDay;\n /** Formats the accessible label of a cell. */\n formatter: Intl.DateTimeFormat;\n /** The dates selected in `multiple` selection. */\n selectedDates: Set<number>;\n /** The selected range in `range` selection. */\n selectedRange?: DayBounds;\n /** The dates rendered as part of the current range, including the previewed ones. */\n rangeDates?: DayBounds;\n /** The dates rendered as previewed. */\n previewDates?: DayBounds;\n /** The first date of the current range, accounting for the preview. */\n first?: number;\n /** The last date of the current range, accounting for the preview. */\n last?: number;\n}\n\nfunction boundsOf(first: CalendarDay, second: CalendarDay): DayBounds {\n const [a, b] = [first.timestamp, second.timestamp];\n return { min: Math.min(a, b), max: Math.max(a, b) };\n}\n\nfunction isInBounds(day: CalendarDay, bounds?: DayBounds): boolean {\n return bounds\n ? day.timestamp >= bounds.min && day.timestamp <= bounds.max\n : false;\n}\n\ninterface DayProperties {\n disabled: boolean;\n first: boolean;\n last: boolean;\n range: boolean;\n preview: boolean;\n current: boolean;\n inactive: boolean;\n hidden: boolean;\n weekend: boolean;\n single: boolean;\n selected: boolean;\n special: boolean;\n}\n\n/**\n * Instantiate a days view as a separate component in the calendar.\n *\n * @element igc-days-view\n *\n * @fires igcActiveDateChange - Emitted when the active date changes.\n * @fires igcRangePreviewDateChange - Emitted when the range preview date changes.\n *\n * @csspart days-row - The days row container.\n * @csspart label - The label container.\n * @csspart label-inner - The inner label container.\n * @csspart week-number - The week number container.\n * @csspart week-number-inner - The inner week number container.\n */\n@blazorSuppressComponent\n@blazorIndirectRender\nexport default class IgcDaysViewComponent extends EventEmitterMixin<\n IgcDaysViewEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-days-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcDaysViewComponent);\n }\n\n //#region Internal properties and state\n\n @state()\n private _dates: CalendarDay[] = [];\n\n @query('[tabindex=\"0\"]')\n private _activeDay?: HTMLElement;\n\n private get _rangeStart(): CalendarDay | undefined {\n return this._hasValues ? firstOf(this._values) : undefined;\n }\n\n private get _rangeEnd(): CalendarDay | undefined {\n return this._hasValues ? lastOf(this._values) : undefined;\n }\n\n private get _weekLabel(): string {\n return getDisplayNamesFormatter().getWeekLabel(this.locale, {\n style: 'short',\n });\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * The active state of the component.\n *\n * @remarks\n * Only the active view holds the tab stop of its active date, so that a multi-month\n * calendar exposes a single tab stop instead of one per rendered month.\n *\n * @default true\n */\n @property({ type: Boolean })\n public active = true;\n\n /**\n * Whether to show leading days which do not belong to the current month.\n * @attr hide-leading-days\n */\n @property({ type: Boolean, attribute: 'hide-leading-days' })\n public hideLeadingDays = false;\n\n /**\n * Whether to show trailing days which do not belong to the current month.\n * @attr hide-trailing-days\n */\n @property({ type: Boolean, attribute: 'hide-trailing-days' })\n public hideTrailingDays = false;\n\n /** The range preview date. */\n @property({ attribute: false })\n public set rangePreviewDate(value: Date | undefined) {\n this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;\n }\n\n public get rangePreviewDate(): Date | undefined {\n return this._rangePreviewDate?.native;\n }\n\n /**\n * The format of the days. Defaults to narrow.\n * @attr week-day-format\n */\n @property({ attribute: 'week-day-format' })\n public weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n\n //#endregion\n\n //#region Lifecycle hooks\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: { role: 'grid' },\n reflectRole: true,\n });\n addThemingController(this, all);\n addKeybindings(this).setActivateHandler(this._handleInteraction);\n addSafeEventListener(this, 'click', this._handleInteraction);\n }\n\n /** @internal */\n protected override update(props: PropertyValues): void {\n if (props.has('_activeDate') || props.has('weekStart')) {\n this._dates = Array.from(\n generateMonth(this._activeDate, this._firstDayOfWeek)\n );\n }\n\n super.update(props);\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 const date = CalendarDay.from(new Date(value));\n\n if (this._rangePreviewDate) {\n this._setRangePreviewDate();\n }\n\n if (this._selectDate(date)) {\n this.emitEvent('igcChange', { detail: date.native });\n }\n\n if (event.type === 'click') {\n this.emitEvent('igcActiveDateChange', { detail: date.native });\n this._activeDate = date;\n }\n }\n }\n\n //#endregion\n\n //#region Internal selection methods\n\n /**\n * Applies the activation of `value` to the selection of this view.\n *\n * @remarks\n * A view inside a calendar has its selection pushed back down by it on the next render.\n * This is what keeps a stand-alone one selecting on its own.\n */\n private _selectDate(value: CalendarDay): boolean {\n const selection = selectDate(\n { value: this._value, values: this._values },\n value,\n { selection: this.selection, disabledDates: this._disabledDates }\n );\n\n if (!selection) {\n return false;\n }\n\n this._value = selection.value;\n this._values = selection.values;\n\n return true;\n }\n\n /** Whether `day` is selected. Disabled dates are excluded by the caller. */\n private _isSelected(day: CalendarDay, context: DayRenderContext): boolean {\n switch (this.selection) {\n case 'single':\n return Boolean(this._value?.equalTo(day));\n\n case 'multiple':\n return context.selectedDates.has(day.timestamp);\n\n case 'range':\n return isInBounds(day, context.selectedRange);\n }\n }\n\n //#endregion\n\n //#region Range helpers\n\n private _setRangePreviewDate(day?: CalendarDay): void {\n this._rangePreviewDate = day;\n this.emitEvent('igcRangePreviewDateChange', {\n detail: day ? day.native : undefined,\n });\n }\n\n private _changeRangePreview(day: CalendarDay): void {\n if (this._values.length === 1 && !this._rangeStart!.equalTo(day)) {\n this._setRangePreviewDate(day);\n }\n }\n\n private _clearRangePreview(): void {\n if (this._rangePreviewDate) {\n this._setRangePreviewDate();\n }\n }\n\n //#endregion\n\n //#region Internal methods\n\n /** Resolves the selection state shared by all cells of the current render pass. */\n private _createRenderContext(): DayRenderContext {\n const context: DayRenderContext = {\n today: CalendarDay.today,\n formatter: getDateFormatter().getIntlFormatter(this.locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }),\n selectedDates: new Set(),\n };\n\n if (this._isMultiple) {\n for (const value of this._values) {\n context.selectedDates.add(value.timestamp);\n }\n return context;\n }\n\n if (!this._isRange || !this._hasValues) {\n return context;\n }\n\n const start = this._rangeStart!;\n const end = this._rangeEnd!;\n const preview = this._rangePreviewDate;\n\n context.selectedRange = boundsOf(start, end);\n\n // The endpoints of the range extend to the previewed date while it is outside of it\n context.first = (preview?.lessThan(start) ? preview : start).timestamp;\n context.last = (preview?.greaterThan(end) ? preview : end).timestamp;\n\n if (preview) {\n context.previewDates = boundsOf(start, preview);\n }\n\n // A single selected date renders as a range only while a second one is previewed\n const rangeEnd = this._values.length === 1 ? preview : end;\n\n if (rangeEnd) {\n context.rangeDates = boundsOf(start, rangeEnd);\n }\n\n return context;\n }\n\n private _intlFormatDay(day: CalendarDay, context: DayRenderContext): string {\n const { formatter, first, last } = context;\n\n // Range selection in progress\n if (this._rangePreviewDate?.equalTo(day)) {\n return formatter.formatRange(\n this._rangeStart!.native,\n this._rangePreviewDate.native\n );\n }\n\n // Range selection finished\n if (day.timestamp === first || day.timestamp === last) {\n return formatter.formatRange(\n this._rangeStart!.native,\n this._rangeEnd!.native\n );\n }\n\n return formatter.format(day.native);\n }\n\n private _getDayHandlers(day: CalendarDay) {\n if (!this._isRange) {\n return { changePreview: nothing, clearPreview: nothing };\n }\n\n return {\n changePreview: this._changeRangePreview.bind(this, day),\n clearPreview: this._clearRangePreview.bind(this),\n };\n }\n\n private _getDayProperties(\n day: CalendarDay,\n context: DayRenderContext\n ): DayProperties {\n const inactive = !areSameMonth(day, this._activeDate);\n const disabled = isDateInRanges(day, this._disabledDates);\n\n const hidden =\n (this.hideLeadingDays && isPreviousMonth(day, this._activeDate)) ||\n (this.hideTrailingDays && isNextMonth(day, this._activeDate));\n\n return {\n disabled: disabled || hidden,\n first: day.timestamp === context.first,\n last: day.timestamp === context.last,\n range: isInBounds(day, context.rangeDates),\n preview: isInBounds(day, context.previewDates),\n current: !inactive && day.equalTo(context.today),\n inactive,\n hidden,\n weekend: day.weekend,\n single: !this._isRange,\n selected: !disabled && this._isSelected(day, context),\n special: !inactive && isDateInRanges(day, this._specialDates),\n };\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Focuses the active date. */\n public focusActiveDate(options?: FocusOptions): void {\n this._activeDay?.focus(options);\n }\n\n //#endregion\n\n protected _renderDayWithProps(\n day: CalendarDay,\n props: DayProperties,\n context: DayRenderContext\n ): TemplateResult {\n const ariaLabel = this._intlFormatDay(day, context);\n const { changePreview, clearPreview } = this._getDayHandlers(day);\n\n return html`\n <span part=${partMap({ date: true, ...props })}>\n <span\n role=\"gridcell\"\n part=${partMap({ 'date-inner': true, ...props })}\n aria-label=${ariaLabel}\n aria-disabled=${props.disabled}\n aria-selected=${props.selected}\n data-value=${day.timestamp}\n tabindex=${this.active && day.equalTo(this._activeDate) ? 0 : -1}\n @focus=${changePreview}\n @blur=${clearPreview}\n @pointerenter=${changePreview}\n @pointerleave=${clearPreview}\n >\n ${day.date}\n </span>\n </span>\n `;\n }\n\n protected _renderHeaderWeekNumber() {\n return html`\n <span role=\"columnheader\" part=\"label week-number first\">\n <span part=\"week-number-inner first\"> ${this._weekLabel} </span>\n </span>\n `;\n }\n\n protected _renderWeekNumber(start: CalendarDay, last: boolean) {\n return html`\n <span role=\"rowheader\" part=${partMap({ 'week-number': true, last })}>\n <span part=${partMap({ 'week-number-inner': true, last })}>\n ${start.week}\n </span>\n </span>\n `;\n }\n\n protected _renderHeaders() {\n const label = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: this.weekDayFormat,\n });\n const aria = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: 'long',\n });\n\n const weekNumber = this.showWeekNumbers\n ? this._renderHeaderWeekNumber()\n : nothing;\n\n // The first week of the grid, so that the labels cannot disagree with it\n const headers = this._dates.slice(0, DAYS_IN_WEEK).map(\n (day) => html`\n <span\n role=\"columnheader\"\n part=\"label\"\n aria-label=${aria.format(day.native)}\n >\n <span part=\"label-inner\">${label.format(day.native)}</span>\n </span>\n `\n );\n\n return html`\n <div role=\"row\" part=\"days-row first\">${weekNumber}${headers}</div>\n `;\n }\n\n protected *_renderWeeks(): Generator<TemplateResult> {\n const context = this._createRenderContext();\n const weeks = Array.from(chunk(this._dates, DAYS_IN_WEEK));\n const lastIndex = weeks.length - 1;\n\n for (const [idx, week] of weeks.entries()) {\n const isLast = idx === lastIndex;\n const properties = week.map((day) =>\n this._getDayProperties(day, context)\n );\n const hidden = properties.every((props) => props.hidden);\n\n yield html`\n <div role=\"row\" part=\"days-row\" aria-hidden=${hidden}>\n ${\n this.showWeekNumbers\n ? this._renderWeekNumber(week[0], isLast)\n : nothing\n }\n ${week.map((day, i) =>\n this._renderDayWithProps(day, properties[i], context)\n )}\n </div>\n `;\n }\n }\n\n protected override render() {\n return html`${this._renderHeaders()}${this._renderWeeks()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-days-view': IgcDaysViewComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"days-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/days-view/days-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter, getDisplayNamesFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport { addKeybindings } from '#internals/controllers/key-bindings.js';\nimport { CalendarDay, DAYS_IN_WEEK } from '#internals/date/model.js';\nimport { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '#internals/decorators/blazorSuppressComponent.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { chunk, firstOf, lastOf } from '#internals/utils/arrays.js';\nimport { addSafeEventListener } from '#internals/utils/events.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport { IgcCalendarBaseComponent } from '../base.js';\nimport {\n areSameMonth,\n generateMonth,\n getViewElement,\n isDateInRanges,\n isNextMonth,\n isPreviousMonth,\n} from '../helpers.js';\nimport { selectDate } from '../selection.js';\nimport { styles } from '../themes/days-view.base.css.js';\nimport { all } from '../themes/days.js';\nimport type { IgcCalendarViewComponentEventMap } from '../types.js';\n\nexport interface IgcDaysViewEventMap extends IgcCalendarViewComponentEventMap {\n igcActiveDateChange: CustomEvent<Date>;\n igcRangePreviewDateChange: CustomEvent<Date>;\n}\n\n/** Inclusive timestamp bounds of a range of days. */\ninterface DayBounds {\n min: number;\n max: number;\n}\n\n/** State derived once per render pass and shared by every day cell. */\ninterface DayRenderContext {\n today: CalendarDay;\n /** Formats the accessible label of a cell. */\n formatter: Intl.DateTimeFormat;\n /** The dates selected in `multiple` selection. */\n selectedDates: Set<number>;\n /** The selected range in `range` selection. */\n selectedRange?: DayBounds;\n /** The dates rendered as part of the current range, including the previewed ones. */\n rangeDates?: DayBounds;\n /** The dates rendered as previewed. */\n previewDates?: DayBounds;\n /** The first date of the current range, accounting for the preview. */\n first?: number;\n /** The last date of the current range, accounting for the preview. */\n last?: number;\n}\n\nfunction boundsOf(first: CalendarDay, second: CalendarDay): DayBounds {\n const [a, b] = [first.timestamp, second.timestamp];\n return { min: Math.min(a, b), max: Math.max(a, b) };\n}\n\nfunction isInBounds(day: CalendarDay, bounds?: DayBounds): boolean {\n return bounds\n ? day.timestamp >= bounds.min && day.timestamp <= bounds.max\n : false;\n}\n\ninterface DayProperties {\n disabled: boolean;\n first: boolean;\n last: boolean;\n range: boolean;\n preview: boolean;\n current: boolean;\n inactive: boolean;\n hidden: boolean;\n weekend: boolean;\n single: boolean;\n selected: boolean;\n special: boolean;\n}\n\n/**\n * Instantiate a days view as a separate component in the calendar.\n *\n * @element igc-days-view\n *\n * @fires igcActiveDateChange - Emitted when the active date changes.\n * @fires igcRangePreviewDateChange - Emitted when the range preview date changes.\n *\n * @csspart days-row - The days row container.\n * @csspart label - The label container.\n * @csspart label-inner - The inner label container.\n * @csspart week-number - The week number container.\n * @csspart week-number-inner - The inner week number container.\n */\n@blazorSuppressComponent\n@blazorIndirectRender\nexport default class IgcDaysViewComponent extends EventEmitterMixin<\n IgcDaysViewEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-days-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcDaysViewComponent);\n }\n\n //#region Internal properties and state\n\n @query('[tabindex=\"0\"]')\n private _activeDay?: HTMLElement;\n\n private get _rangeStart(): CalendarDay | undefined {\n return this._hasValues ? firstOf(this._values) : undefined;\n }\n\n private get _rangeEnd(): CalendarDay | undefined {\n return this._hasValues ? lastOf(this._values) : undefined;\n }\n\n private get _weekLabel(): string {\n return getDisplayNamesFormatter().getWeekLabel(this.locale, {\n style: 'short',\n });\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * The active state of the component.\n *\n * @remarks\n * Only the active view holds the tab stop of its active date, so that a multi-month\n * calendar exposes a single tab stop instead of one per rendered month.\n *\n * @default true\n */\n @property({ type: Boolean })\n public active = true;\n\n /**\n * Whether to show leading days which do not belong to the current month.\n * @attr hide-leading-days\n */\n @property({ type: Boolean, attribute: 'hide-leading-days' })\n public hideLeadingDays = false;\n\n /**\n * Whether to show trailing days which do not belong to the current month.\n * @attr hide-trailing-days\n */\n @property({ type: Boolean, attribute: 'hide-trailing-days' })\n public hideTrailingDays = false;\n\n /** The range preview date. */\n @property({ attribute: false })\n public set rangePreviewDate(value: Date | undefined) {\n this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;\n }\n\n public get rangePreviewDate(): Date | undefined {\n return this._rangePreviewDate?.native;\n }\n\n /**\n * The format of the days. Defaults to narrow.\n * @attr week-day-format\n */\n @property({ attribute: 'week-day-format' })\n public weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n\n //#endregion\n\n //#region Lifecycle hooks\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: { role: 'grid' },\n reflectRole: true,\n });\n addThemingController(this, all);\n addKeybindings(this).setActivateHandler(this._handleInteraction);\n addSafeEventListener(this, 'click', this._handleInteraction);\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 const date = CalendarDay.from(new Date(value));\n\n if (this._rangePreviewDate) {\n this._setRangePreviewDate();\n }\n\n if (this._selectDate(date)) {\n this.emitEvent('igcChange', { detail: date.native });\n }\n\n if (event.type === 'click') {\n this.emitEvent('igcActiveDateChange', { detail: date.native });\n this._activeDate = date;\n }\n }\n }\n\n //#endregion\n\n //#region Internal selection methods\n\n /**\n * Applies the activation of `value` to the selection of this view.\n *\n * @remarks\n * A view inside a calendar has its selection pushed back down by it on the next render.\n * This is what keeps a stand-alone one selecting on its own.\n */\n private _selectDate(value: CalendarDay): boolean {\n const selection = selectDate(\n { value: this._value, values: this._values },\n value,\n { selection: this.selection, disabledDates: this._disabledDates }\n );\n\n if (!selection) {\n return false;\n }\n\n this._value = selection.value;\n this._values = selection.values;\n\n return true;\n }\n\n /** Whether `day` is selected. Disabled dates are excluded by the caller. */\n private _isSelected(day: CalendarDay, context: DayRenderContext): boolean {\n switch (this.selection) {\n case 'single':\n return Boolean(this._value?.equalTo(day));\n\n case 'multiple':\n return context.selectedDates.has(day.timestamp);\n\n case 'range':\n return isInBounds(day, context.selectedRange);\n }\n }\n\n //#endregion\n\n //#region Range helpers\n\n private _setRangePreviewDate(day?: CalendarDay): void {\n this._rangePreviewDate = day;\n this.emitEvent('igcRangePreviewDateChange', {\n detail: day ? day.native : undefined,\n });\n }\n\n private _changeRangePreview(day: CalendarDay): void {\n if (this._values.length === 1 && !this._rangeStart!.equalTo(day)) {\n this._setRangePreviewDate(day);\n }\n }\n\n private _clearRangePreview(): void {\n if (this._rangePreviewDate) {\n this._setRangePreviewDate();\n }\n }\n\n //#endregion\n\n //#region Internal methods\n\n /** Resolves the selection state shared by all cells of the current render pass. */\n private _createRenderContext(): DayRenderContext {\n const context: DayRenderContext = {\n today: CalendarDay.today,\n formatter: getDateFormatter().getIntlFormatter(this.locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }),\n selectedDates: new Set(),\n };\n\n if (this._isMultiple) {\n for (const value of this._values) {\n context.selectedDates.add(value.timestamp);\n }\n return context;\n }\n\n if (!this._isRange || !this._hasValues) {\n return context;\n }\n\n const start = this._rangeStart!;\n const end = this._rangeEnd!;\n const preview = this._rangePreviewDate;\n\n context.selectedRange = boundsOf(start, end);\n\n // The endpoints of the range extend to the previewed date while it is outside of it\n context.first = (preview?.lessThan(start) ? preview : start).timestamp;\n context.last = (preview?.greaterThan(end) ? preview : end).timestamp;\n\n if (preview) {\n context.previewDates = boundsOf(start, preview);\n }\n\n // A single selected date renders as a range only while a second one is previewed\n const rangeEnd = this._values.length === 1 ? preview : end;\n\n if (rangeEnd) {\n context.rangeDates = boundsOf(start, rangeEnd);\n }\n\n return context;\n }\n\n private _intlFormatDay(day: CalendarDay, context: DayRenderContext): string {\n const { formatter, first, last } = context;\n\n // Range selection in progress\n if (this._rangePreviewDate?.equalTo(day)) {\n return formatter.formatRange(\n this._rangeStart!.native,\n this._rangePreviewDate.native\n );\n }\n\n // Range selection finished\n if (day.timestamp === first || day.timestamp === last) {\n return formatter.formatRange(\n this._rangeStart!.native,\n this._rangeEnd!.native\n );\n }\n\n return formatter.format(day.native);\n }\n\n private _getDayHandlers(day: CalendarDay) {\n if (!this._isRange) {\n return { changePreview: nothing, clearPreview: nothing };\n }\n\n return {\n changePreview: this._changeRangePreview.bind(this, day),\n clearPreview: this._clearRangePreview.bind(this),\n };\n }\n\n private _getDayProperties(\n day: CalendarDay,\n context: DayRenderContext\n ): DayProperties {\n const inactive = !areSameMonth(day, this._activeDate);\n const disabled = isDateInRanges(day, this._disabledDates);\n\n const hidden =\n (this.hideLeadingDays && isPreviousMonth(day, this._activeDate)) ||\n (this.hideTrailingDays && isNextMonth(day, this._activeDate));\n\n return {\n disabled: disabled || hidden,\n first: day.timestamp === context.first,\n last: day.timestamp === context.last,\n range: isInBounds(day, context.rangeDates),\n preview: isInBounds(day, context.previewDates),\n current: !inactive && day.equalTo(context.today),\n inactive,\n hidden,\n weekend: day.weekend,\n single: !this._isRange,\n selected: !disabled && this._isSelected(day, context),\n special: !inactive && isDateInRanges(day, this._specialDates),\n };\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Focuses the active date. */\n public focusActiveDate(options?: FocusOptions): void {\n this._activeDay?.focus(options);\n }\n\n //#endregion\n\n protected _renderDayWithProps(\n day: CalendarDay,\n props: DayProperties,\n context: DayRenderContext\n ): TemplateResult {\n const ariaLabel = this._intlFormatDay(day, context);\n const { changePreview, clearPreview } = this._getDayHandlers(day);\n\n return html`\n <span part=${partMap({ date: true, ...props })}>\n <span\n role=\"gridcell\"\n part=${partMap({ 'date-inner': true, ...props })}\n aria-label=${ariaLabel}\n aria-disabled=${props.disabled}\n aria-selected=${props.selected}\n data-value=${day.timestamp}\n tabindex=${this.active && day.equalTo(this._activeDate) ? 0 : -1}\n @focus=${changePreview}\n @blur=${clearPreview}\n @pointerenter=${changePreview}\n @pointerleave=${clearPreview}\n >\n ${day.date}\n </span>\n </span>\n `;\n }\n\n protected _renderHeaderWeekNumber() {\n return html`\n <span role=\"columnheader\" part=\"label week-number first\">\n <span part=\"week-number-inner first\"> ${this._weekLabel} </span>\n </span>\n `;\n }\n\n protected _renderWeekNumber(start: CalendarDay, last: boolean) {\n return html`\n <span role=\"rowheader\" part=${partMap({ 'week-number': true, last })}>\n <span part=${partMap({ 'week-number-inner': true, last })}>\n ${start.week}\n </span>\n </span>\n `;\n }\n\n protected _renderHeaders(dates: CalendarDay[]) {\n const label = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: this.weekDayFormat,\n });\n const aria = getDateFormatter().getIntlFormatter(this.locale, {\n weekday: 'long',\n });\n\n const weekNumber = this.showWeekNumbers\n ? this._renderHeaderWeekNumber()\n : nothing;\n\n // The first week of the grid, so that the labels cannot disagree with it\n const headers = dates.slice(0, DAYS_IN_WEEK).map(\n (day) => html`\n <span\n role=\"columnheader\"\n part=\"label\"\n aria-label=${aria.format(day.native)}\n >\n <span part=\"label-inner\">${label.format(day.native)}</span>\n </span>\n `\n );\n\n return html`\n <div role=\"row\" part=\"days-row first\">${weekNumber}${headers}</div>\n `;\n }\n\n protected *_renderWeeks(dates: CalendarDay[]): Generator<TemplateResult> {\n const context = this._createRenderContext();\n const weeks = Array.from(chunk(dates, DAYS_IN_WEEK));\n const lastIndex = weeks.length - 1;\n\n for (const [idx, week] of weeks.entries()) {\n const isLast = idx === lastIndex;\n const properties = week.map((day) =>\n this._getDayProperties(day, context)\n );\n const hidden = properties.every((props) => props.hidden);\n\n yield html`\n <div role=\"row\" part=\"days-row\" aria-hidden=${hidden}>\n ${\n this.showWeekNumbers\n ? this._renderWeekNumber(week[0], isLast)\n : nothing\n }\n ${week.map((day, i) =>\n this._renderDayWithProps(day, properties[i], context)\n )}\n </div>\n `;\n }\n }\n\n protected override render() {\n // Derived per render - it depends on the active date, `weekStart` and the `locale`\n const dates = Array.from(\n generateMonth(this._activeDate, this._firstDayOfWeek)\n );\n\n return html`${this._renderHeaders(dates)}${this._renderWeeks(dates)}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-days-view': IgcDaysViewComponent;\n }\n}\n"]}
|
|
@@ -6,6 +6,19 @@ export declare const YEARS_PER_PAGE = 15;
|
|
|
6
6
|
/** The value of the activated day/month/year element of a calendar view, or -1. */
|
|
7
7
|
export declare function getViewElement(event: Event): number;
|
|
8
8
|
export declare function getWeekDayNumber(value: WeekDays): number;
|
|
9
|
+
/**
|
|
10
|
+
* The first day of the week of `locale`, as reported by `Intl.Locale.prototype.getWeekInfo()`.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* igniteui-i18n-core falls back to Monday in engines without the API. This overrides
|
|
14
|
+
* that with `sunday`, the documented default of the components.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getLocaleWeekStart(locale: string): WeekDays;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the `first` field precedes the `second` one in the formatted `parts`.
|
|
19
|
+
* A missing field counts as last.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isDatePartBefore(parts: Intl.DateTimeFormatPart[], first: Intl.DateTimeFormatPartTypes, second: Intl.DateTimeFormatPartTypes): boolean;
|
|
9
22
|
export declare function areSameMonth(first: DayParameter, second: DayParameter): boolean;
|
|
10
23
|
export declare function isNextMonth(target: DayParameter, origin: DayParameter): boolean;
|
|
11
24
|
export declare function isPreviousMonth(target: DayParameter, origin: DayParameter): boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getDateFormatter } from 'igniteui-i18n-core';
|
|
1
2
|
import { CalendarDay, calendarRange, DAYS_IN_WEEK, toCalendarDay, } from '#internals/date/model.js';
|
|
2
3
|
import { firstOf, lastOf } from '#internals/utils/arrays.js';
|
|
3
4
|
import { getElementFromPath } from '#internals/utils/events.js';
|
|
@@ -16,6 +17,7 @@ const WEEK_DAYS_MAP = {
|
|
|
16
17
|
friday: 5,
|
|
17
18
|
saturday: 6,
|
|
18
19
|
};
|
|
20
|
+
const WEEK_DAY_NAMES = Object.keys(WEEK_DAYS_MAP);
|
|
19
21
|
export function getViewElement(event) {
|
|
20
22
|
const element = getElementFromPath('[data-value]', event);
|
|
21
23
|
return element ? asNumber(element.dataset.value, -1) : -1;
|
|
@@ -23,6 +25,19 @@ export function getViewElement(event) {
|
|
|
23
25
|
export function getWeekDayNumber(value) {
|
|
24
26
|
return WEEK_DAYS_MAP[value];
|
|
25
27
|
}
|
|
28
|
+
export function getLocaleWeekStart(locale) {
|
|
29
|
+
if (!('getWeekInfo' in Intl.Locale.prototype)) {
|
|
30
|
+
return 'sunday';
|
|
31
|
+
}
|
|
32
|
+
return WEEK_DAY_NAMES[getDateFormatter().getFirstDayOfWeek(locale) % 7];
|
|
33
|
+
}
|
|
34
|
+
export function isDatePartBefore(parts, first, second) {
|
|
35
|
+
const indexOf = (type) => {
|
|
36
|
+
const index = parts.findIndex((part) => part.type === type);
|
|
37
|
+
return index < 0 ? Number.POSITIVE_INFINITY : index;
|
|
38
|
+
};
|
|
39
|
+
return indexOf(first) < indexOf(second);
|
|
40
|
+
}
|
|
26
41
|
export function areSameMonth(first, second) {
|
|
27
42
|
const a = toCalendarDay(first);
|
|
28
43
|
const b = toCalendarDay(second);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/calendar/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CalendarDay,\n calendarRange,\n DAYS_IN_WEEK,\n type DayParameter,\n toCalendarDay,\n} from '#internals/date/model.js';\nimport { firstOf, lastOf } from '#internals/utils/arrays.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { asNumber, modulo } from '#internals/utils/math.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 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} as const;\n\n/** The value of the activated day/month/year element of a calendar view, or -1. */\nexport function getViewElement(event: Event): number {\n const element = getElementFromPath<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/** Yields the days rendered by a single days view - six weeks starting on `firstWeekDay`. */\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 = firstOf(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 = lastOf(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"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/calendar/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EAEZ,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAEL,aAAa,GAEd,MAAM,YAAY,CAAC;AAIpB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;CACH,CAAC;AACX,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAe,CAAC;AAGhE,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,MAAM,OAAO,GAAG,kBAAkB,CAAc,cAAc,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AASD,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,OAAO,cAAc,CAAC,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAMD,MAAM,UAAU,gBAAgB,CAC9B,KAAgC,EAChC,KAAmC,EACnC,MAAoC;IAEpC,MAAM,OAAO,GAAG,CAAC,IAAkC,EAAE,EAAE;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC5D,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAmB,EACnB,MAAoB;IAEpB,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAoB,EACpB,MAAoB;IAEpB,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAoB,EACpB,MAAoB;IAEpB,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAGD,MAAM,SAAS,CAAC,CAAC,aAAa,CAC5B,KAAmB,EACnB,YAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9D,KAAK,CAAC,CAAC,aAAa,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;QAChC,GAAG,EAAE,cAAc;KACpB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAqB,EACrB,KAAa;IAEb,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;IAC/C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAkB,EAClB,MAA6B;IAE7B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ;gBAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;gBAChB,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ;oBACrC,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,aAAa,CAAC,KAAK;gBACtB,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAErC,KAAK,aAAa,CAAC,MAAM;gBACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAElC,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC5D,OAAO,KAAK,CAAC,SAAS,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC;YAC1D,CAAC;YAED,KAAK,aAAa,CAAC,QAAQ;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAEhD;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAgB,EAChB,GAAgB,EAChB,aAAqC;IAErC,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,IAAI,GAAG,EAAE,CAAC;QACR,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,aAAa,CAAC,MAAM;YAC1B,SAAS,EAAE,CAAC,GAAG,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,aAAa,CAAC,KAAK;YACzB,SAAS,EAAE,CAAC,GAAG,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3C,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport {\n CalendarDay,\n calendarRange,\n DAYS_IN_WEEK,\n type DayParameter,\n toCalendarDay,\n} from '#internals/date/model.js';\nimport { firstOf, lastOf } from '#internals/utils/arrays.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { asNumber, modulo } from '#internals/utils/math.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 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} as const;\nconst WEEK_DAY_NAMES = Object.keys(WEEK_DAYS_MAP) as WeekDays[];\n\n/** The value of the activated day/month/year element of a calendar view, or -1. */\nexport function getViewElement(event: Event): number {\n const element = getElementFromPath<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\n/**\n * The first day of the week of `locale`, as reported by `Intl.Locale.prototype.getWeekInfo()`.\n *\n * @remarks\n * igniteui-i18n-core falls back to Monday in engines without the API. This overrides\n * that with `sunday`, the documented default of the components.\n */\nexport function getLocaleWeekStart(locale: string): WeekDays {\n if (!('getWeekInfo' in Intl.Locale.prototype)) {\n return 'sunday';\n }\n\n // igniteui-i18n-core numbers the days 1 (Monday) - 7 (Sunday)\n return WEEK_DAY_NAMES[getDateFormatter().getFirstDayOfWeek(locale) % 7];\n}\n\n/**\n * Whether the `first` field precedes the `second` one in the formatted `parts`.\n * A missing field counts as last.\n */\nexport function isDatePartBefore(\n parts: Intl.DateTimeFormatPart[],\n first: Intl.DateTimeFormatPartTypes,\n second: Intl.DateTimeFormatPartTypes\n): boolean {\n const indexOf = (type: Intl.DateTimeFormatPartTypes) => {\n const index = parts.findIndex((part) => part.type === type);\n return index < 0 ? Number.POSITIVE_INFINITY : index;\n };\n\n return indexOf(first) < indexOf(second);\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/** Yields the days rendered by a single days view - six weeks starting on `firstWeekDay`. */\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 = firstOf(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 = lastOf(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"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host(igc-calendar){display:flex;flex-direction:column;font-family:var(--ig-font-family);min-width:-moz-max-content;min-width:max-content;overflow:hidden;font-size:max(var(--is-large, 1)*max(var(--ig-body-1-font-size), -1 * var(--ig-body-1-font-size)),var(--is-medium, 1)*max(var(--ig-body-2-font-size), -1 * var(--ig-body-2-font-size)),var(--is-small, 1)*max(var(--ig-body-2-font-size), -1 * var(--ig-body-2-font-size)));font-weight:max(var(--is-large, 1)*max(var(--ig-body-1-font-weight), -1 * var(--ig-body-1-font-weight)),var(--is-medium, 1)*max(var(--ig-body-2-font-weight), -1 * var(--ig-body-2-font-weight)),var(--is-small, 1)*max(var(--ig-body-2-font-weight), -1 * var(--ig-body-2-font-weight)));font-style:max(var(--is-large, 1)*max(var(--ig-body-1-font-style), -1 * var(--ig-body-1-font-style)),var(--is-medium, 1)*max(var(--ig-body-2-font-style), -1 * var(--ig-body-2-font-style)),var(--is-small, 1)*max(var(--ig-body-2-font-style), -1 * var(--ig-body-2-font-style)));line-height:max(var(--is-large, 1)*max(var(--ig-body-1-line-height), -1 * var(--ig-body-1-line-height)),var(--is-medium, 1)*max(var(--ig-body-2-line-height), -1 * var(--ig-body-2-line-height)),var(--is-small, 1)*max(var(--ig-body-2-line-height), -1 * var(--ig-body-2-line-height)));letter-spacing:max(var(--is-large, 1)*max(var(--ig-body-1-letter-spacing), -1 * var(--ig-body-1-letter-spacing)),var(--is-medium, 1)*max(var(--ig-body-2-letter-spacing), -1 * var(--ig-body-2-letter-spacing)),var(--is-small, 1)*max(var(--ig-body-2-letter-spacing), -1 * var(--ig-body-2-letter-spacing)));text-transform:max(var(--is-large, 1)*max(var(--ig-body-1-text-transform), -1 * var(--ig-body-1-text-transform)),var(--is-medium, 1)*max(var(--ig-body-2-text-transform), -1 * var(--ig-body-2-text-transform)),var(--is-small, 1)*max(var(--ig-body-2-text-transform), -1 * var(--ig-body-2-text-transform)))}:host(igc-calendar) [part=days-view-container] [part=navigation],:host(igc-calendar) [part=days-view-container] igc-days-view{min-width:max(var(--is-large, 1)*max(22.5rem, -1 * 22.5rem),var(--is-medium, 1)*max(19.625rem, -1 * 19.625rem),var(--is-small, 1)*max(18.125rem, -1 * 18.125rem))}:host(igc-calendar) igc-days-view::part(date),:host(igc-calendar) igc-days-view::part(week-number),:host(igc-calendar) igc-days-view::part(label),:host(igc-calendar) igc-days-view::part(days-row){box-sizing:border-box}:host(igc-calendar) igc-days-view::part(week-number-inner),:host(igc-calendar) igc-days-view::part(date-inner){box-sizing:border-box}:host(igc-calendar) igc-years-view,:host(igc-calendar) igc-months-view{display:grid;row-gap:.25rem;width:100%;min-width:max(var(--is-large, 1)*max(22.5rem, -1 * 22.5rem),var(--is-medium, 1)*max(19.625rem, -1 * 19.625rem),var(--is-small, 1)*max(18.125rem, -1 * 18.125rem));grid-template-rows:repeat(3, minmax(max-content, 1fr))}:host(igc-calendar) igc-days-view,:host(igc-calendar) igc-months-view,:host(igc-calendar) igc-years-view{font-family:var(--ig-font-family);overflow:visible}[part=navigation]{position:relative;display:flex;justify-content:space-between;align-items:center;padding:0 max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));-webkit-user-select:none;-moz-user-select:none;user-select:none}[part=months-navigation],[part=years-navigation],[part~=navigation-button]{background:rgba(0,0,0,0);display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:none;padding:0;transition:color 150ms ease-in-out}[part=months-navigation]:hover,[part=months-navigation]:focus,[part=years-navigation]:hover,[part=years-navigation]:focus,[part~=navigation-button]:hover,[part~=navigation-button]:focus{cursor:pointer}[part=months-navigation]:focus,[part=years-navigation]:focus,[part~=navigation-button]:focus{outline:none}[part~=navigation-button][part~=vertical]{transform:rotate(90deg)}[part=navigation-buttons]{display:flex;align-items:center}:host-context([dir=rtl]) [part~=navigation-button],:host([dir=rtl]) [part~=navigation-button]{transform:rotate(180deg)}:host-context([dir=rtl]) [part~=navigation-button][part~=vertical],:host([dir=rtl]) [part~=navigation-button][part~=vertical]{transform:rotate(90deg)}:host(igc-calendar[header-orientation=vertical]){flex-direction:row}:host(igc-calendar[header-orientation=vertical]) [part=header]{width:10.5rem;min-width:10.5rem;justify-content:flex-start;border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0}:host(igc-calendar[header-orientation=vertical]) [part=header-date]{flex-direction:column}[part~=picker-dates]{display:flex;align-items:center;gap:.25rem}[part=days-view-container]{flex-grow:1}[part=header]{border-radius:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;display:flex;flex-direction:column;justify-content:space-between;padding:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, var(--ig-spacing))),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, var(--ig-spacing))))}[part~=content]{display:flex;flex-grow:1;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}[part~=content]:has(>[part~=navigation]){flex-direction:column}[part~=content-vertical]{flex-direction:column}[part=header-date],[part=header-title]{margin:0}[part=header-date]{display:flex;white-space:pre-wrap}.aria-off-screen{position:absolute;width:1px;height:1px;margin:-1px;border:none;clip:rect(0, 0, 0, 0);outline:0;pointer-events:none;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}`;
|
|
2
|
+
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host(igc-calendar){display:flex;flex-direction:column;font-family:var(--ig-font-family);min-width:-moz-max-content;min-width:max-content;overflow:hidden;font-size:max(var(--is-large, 1)*max(var(--ig-body-1-font-size), -1 * var(--ig-body-1-font-size)),var(--is-medium, 1)*max(var(--ig-body-2-font-size), -1 * var(--ig-body-2-font-size)),var(--is-small, 1)*max(var(--ig-body-2-font-size), -1 * var(--ig-body-2-font-size)));font-weight:max(var(--is-large, 1)*max(var(--ig-body-1-font-weight), -1 * var(--ig-body-1-font-weight)),var(--is-medium, 1)*max(var(--ig-body-2-font-weight), -1 * var(--ig-body-2-font-weight)),var(--is-small, 1)*max(var(--ig-body-2-font-weight), -1 * var(--ig-body-2-font-weight)));font-style:max(var(--is-large, 1)*max(var(--ig-body-1-font-style), -1 * var(--ig-body-1-font-style)),var(--is-medium, 1)*max(var(--ig-body-2-font-style), -1 * var(--ig-body-2-font-style)),var(--is-small, 1)*max(var(--ig-body-2-font-style), -1 * var(--ig-body-2-font-style)));line-height:max(var(--is-large, 1)*max(var(--ig-body-1-line-height), -1 * var(--ig-body-1-line-height)),var(--is-medium, 1)*max(var(--ig-body-2-line-height), -1 * var(--ig-body-2-line-height)),var(--is-small, 1)*max(var(--ig-body-2-line-height), -1 * var(--ig-body-2-line-height)));letter-spacing:max(var(--is-large, 1)*max(var(--ig-body-1-letter-spacing), -1 * var(--ig-body-1-letter-spacing)),var(--is-medium, 1)*max(var(--ig-body-2-letter-spacing), -1 * var(--ig-body-2-letter-spacing)),var(--is-small, 1)*max(var(--ig-body-2-letter-spacing), -1 * var(--ig-body-2-letter-spacing)));text-transform:max(var(--is-large, 1)*max(var(--ig-body-1-text-transform), -1 * var(--ig-body-1-text-transform)),var(--is-medium, 1)*max(var(--ig-body-2-text-transform), -1 * var(--ig-body-2-text-transform)),var(--is-small, 1)*max(var(--ig-body-2-text-transform), -1 * var(--ig-body-2-text-transform)))}:host(igc-calendar) [part=days-view-container] [part=navigation],:host(igc-calendar) [part=days-view-container] igc-days-view{min-width:max(var(--is-large, 1)*max(22.5rem, -1 * 22.5rem),var(--is-medium, 1)*max(19.625rem, -1 * 19.625rem),var(--is-small, 1)*max(18.125rem, -1 * 18.125rem))}:host(igc-calendar) igc-days-view::part(date),:host(igc-calendar) igc-days-view::part(week-number),:host(igc-calendar) igc-days-view::part(label),:host(igc-calendar) igc-days-view::part(days-row){box-sizing:border-box}:host(igc-calendar) igc-days-view::part(week-number-inner),:host(igc-calendar) igc-days-view::part(date-inner){box-sizing:border-box}:host(igc-calendar) igc-years-view,:host(igc-calendar) igc-months-view{display:grid;row-gap:.25rem;width:100%;min-width:max(var(--is-large, 1)*max(22.5rem, -1 * 22.5rem),var(--is-medium, 1)*max(19.625rem, -1 * 19.625rem),var(--is-small, 1)*max(18.125rem, -1 * 18.125rem));grid-template-rows:repeat(3, minmax(max-content, 1fr))}:host(igc-calendar) igc-days-view,:host(igc-calendar) igc-months-view,:host(igc-calendar) igc-years-view{font-family:var(--ig-font-family);overflow:visible}[part=navigation]{position:relative;display:flex;justify-content:space-between;align-items:center;padding:0 max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));-webkit-user-select:none;-moz-user-select:none;user-select:none}[part=months-navigation],[part=years-navigation],[part~=navigation-button]{background:rgba(0,0,0,0);display:inline-flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:none;padding:0;transition:color 150ms ease-in-out}[part=months-navigation]:hover,[part=months-navigation]:focus,[part=years-navigation]:hover,[part=years-navigation]:focus,[part~=navigation-button]:hover,[part~=navigation-button]:focus{cursor:pointer}[part=months-navigation]:focus,[part=years-navigation]:focus,[part~=navigation-button]:focus{outline:none}[part~=navigation-button][part~=vertical]{transform:rotate(90deg)}[part=navigation-buttons]{display:flex;align-items:center}:host-context([dir=rtl]) [part~=navigation-button],:host([dir=rtl]) [part~=navigation-button]{transform:rotate(180deg)}:host-context([dir=rtl]) [part~=navigation-button][part~=vertical],:host([dir=rtl]) [part~=navigation-button][part~=vertical]{transform:rotate(90deg)}:host(igc-calendar[header-orientation=vertical]){flex-direction:row}:host(igc-calendar[header-orientation=vertical]) [part=header]{width:10.5rem;min-width:10.5rem;justify-content:flex-start;border-radius:inherit;border-start-end-radius:0;border-end-end-radius:0}:host(igc-calendar[header-orientation=vertical]) [part=header-date]{flex-direction:column}[part~=picker-dates]{display:flex;align-items:center;gap:.25rem}[part=days-view-container]{flex-grow:1}[part=header]{border-radius:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;display:flex;flex-direction:column;justify-content:space-between;padding:max(var(--is-large, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-large, var(--ig-spacing, var(--ig-spacing))),var(--is-medium, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-medium, var(--ig-spacing, var(--ig-spacing))),var(--is-small, 1)*max(1rem, -1 * 1rem)*var(--ig-spacing-small, var(--ig-spacing, var(--ig-spacing))))}[part~=content]{display:flex;flex-grow:1;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}[part~=content]:has(>[part~=navigation]){flex-direction:column}[part~=content-vertical]{flex-direction:column}[part=header-date],[part=header-title]{margin:0}[part=header-date]{display:flex;white-space:pre-wrap}.aria-off-screen{position:absolute;width:1px;height:1px;margin:-1px;border:none;clip:rect(0, 0, 0, 0);outline:0;pointer-events:none;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media(forced-colors: active){[part~=header]{border:.0625rem solid CanvasText}}`;
|
|
3
3
|
//# sourceMappingURL=calendar.base.css.js.map
|