@nuralyui/datepicker 0.0.8 → 0.0.10
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/bundle.js +677 -8
- package/datepicker.component.d.ts +2 -1
- package/datepicker.component.js +5 -0
- package/datepicker.component.js.map +1 -1
- package/datepicker.constant.js.map +1 -1
- package/datepicker.style.js.map +1 -1
- package/datepicker.style.variables.js.map +1 -1
- package/datepicker.types.js.map +1 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/react.js.map +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2023 Google Laabidi Aymen
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import { LitElement, PropertyValues, TemplateResult } from 'lit';
|
|
6
|
+
import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
|
|
7
7
|
import { DatePickerMode, DatePickerType, DatePickerSize, DatePickerVariant, DatePickerPlacement, INavigationDate, IDayPresentation, DatePickerState } from './datepicker.types.js';
|
|
8
8
|
import { DatePickerHost } from './interfaces/base-controller.interface.js';
|
|
9
9
|
import './utils/locale.helper.js';
|
|
@@ -78,6 +78,7 @@ export declare class HyDatePickerElement extends HyDatePickerElement_base implem
|
|
|
78
78
|
placement: DatePickerPlacement;
|
|
79
79
|
label: string;
|
|
80
80
|
helper: string;
|
|
81
|
+
placeholder: string;
|
|
81
82
|
state: DatePickerState | INPUT_STATE;
|
|
82
83
|
useSelectDropdowns: boolean;
|
|
83
84
|
openedCalendar: boolean;
|
package/datepicker.component.js
CHANGED
|
@@ -96,6 +96,7 @@ let HyDatePickerElement = class HyDatePickerElement extends NuralyUIBaseMixin(Li
|
|
|
96
96
|
this.placement = DatePickerPlacement.Auto;
|
|
97
97
|
this.label = '';
|
|
98
98
|
this.helper = '';
|
|
99
|
+
this.placeholder = '';
|
|
99
100
|
this.state = "default" /* INPUT_STATE.Default */;
|
|
100
101
|
this.useSelectDropdowns = false;
|
|
101
102
|
// Calendar state
|
|
@@ -393,6 +394,7 @@ let HyDatePickerElement = class HyDatePickerElement extends NuralyUIBaseMixin(Li
|
|
|
393
394
|
id="${INPUT_FIELD_ID}"
|
|
394
395
|
.type="${this.INPUT_TYPE}"
|
|
395
396
|
.value="${this.inputFieldValue}"
|
|
397
|
+
.placeholder="${this.placeholder}"
|
|
396
398
|
.size="${this.size}"
|
|
397
399
|
.state="${this.state}"
|
|
398
400
|
.disabled="${this.disabled}"
|
|
@@ -604,6 +606,9 @@ __decorate([
|
|
|
604
606
|
__decorate([
|
|
605
607
|
property({ type: String })
|
|
606
608
|
], HyDatePickerElement.prototype, "helper", void 0);
|
|
609
|
+
__decorate([
|
|
610
|
+
property({ type: String })
|
|
611
|
+
], HyDatePickerElement.prototype, "placeholder", void 0);
|
|
607
612
|
__decorate([
|
|
608
613
|
property({ type: String })
|
|
609
614
|
], HyDatePickerElement.prototype, "state", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.component.js","sourceRoot":"","sources":["../../../src/components/datepicker/datepicker.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { LitElement, html, nothing, PropertyValues, TemplateResult } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { NuralyUIBaseMixin } from '@nuralyui/common/mixins';\nimport { styles } from './datepicker.style.js';\nimport {\n DatePickerMode,\n DatePickerType,\n DatePickerSize,\n DatePickerVariant,\n DatePickerPlacement,\n INavigationDate,\n IDayPresentation,\n DatePickerState,\n} from './datepicker.types.js';\nimport {\n DEFAULT_DATE_FORMAT,\n DEFAULT_LOCALE,\n INPUT_FIELD_ID,\n CALENDAR_CONTAINER_CLASS,\n DATE_PICKER_EVENTS,\n} from './datepicker.constant.js';\nimport {\n DatePickerCalendarController,\n DatePickerSelectionController,\n DatePickerKeyboardController,\n DatePickerPositioningController,\n} from './controllers/index.js';\nimport { SharedDropdownController } from '@nuralyui/common/controllers';\nimport { DatePickerHost } from './interfaces/base-controller.interface.js';\nimport dayjs from 'dayjs';\nimport { renderMonthsTemplate } from './templates/months.template.js';\nimport { renderYearsTemplate } from './templates/years.template.js';\nimport { renderDays } from './templates/days.template.js';\n\nimport { capitalizeFirstLetter } from './utils/string.helper.js';\nimport './utils/locale.helper.js';\nimport { INPUT_STATE } from '../input/input.types.js';\n\n/**\n * HyDatePicker - A comprehensive date picker component\n * \n * @element nr-datepicker\n * \n * @fires nr-date-change - Fired when a date is selected\n * @fires nr-range-change - Fired when a date range is selected\n * @fires nr-calendar-open - Fired when calendar is opened\n * @fires nr-calendar-close - Fired when calendar is closed\n * @fires nr-focus - Fired when component receives focus\n * @fires nr-blur - Fired when component loses focus\n * @fires nr-validation - Fired when validation state changes\n * \n * @slot label - Label content for the input field\n * @slot helper-text - Helper text content below the input field\n * @slot icon - Icon content for the input field\n * \n * @csspart input - The input field part\n * @csspart calendar - The calendar container part\n * @csspart header - The calendar header part\n * @csspart days - The days grid part\n * @csspart day - Individual day cell part\n * @csspart months - The months grid part\n * @csspart years - The years grid part\n * \n * @example\n * ```html\n * <nr-datepicker \n * label=\"Select Date\"\n * field-format=\"DD/MM/YYYY\"\n * @nr-date-change=\"${this.handleDateChange}\">\n * </nr-datepicker>\n * ```\n * \n * @example Range picker\n * ```html\n * <nr-datepicker \n * range\n * label=\"Select Date Range\"\n * @nr-range-change=\"${this.handleRangeChange}\">\n * </nr-datepicker>\n * ```\n */\n@customElement('nr-datepicker')\nexport class HyDatePickerElement extends NuralyUIBaseMixin(LitElement) implements DatePickerHost {\n static override styles = styles;\n override requiredComponents = ['nr-input', 'nr-button', 'nr-icon', 'hy-select'];\n\n // Controllers - following the delegation pattern\n private calendarController = new DatePickerCalendarController(this);\n private selectionController = new DatePickerSelectionController(this);\n private keyboardController = new DatePickerKeyboardController(this, this.calendarController, this.selectionController);\n private positioningController = new DatePickerPositioningController(this);\n private dropdownController = new SharedDropdownController(this);\n\n // Core properties following the architecture pattern\n @property({ type: String }) name = '';\n @property({ type: String }) value = '';\n @property({ type: String, attribute: 'date-value' }) dateValue = '';\n @property({ type: String, attribute: 'default-value' }) defaultValue = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) required = false;\n @property({ type: String }) locale = DEFAULT_LOCALE;\n @property({ type: String, attribute: 'field-format' }) fieldFormat = DEFAULT_DATE_FORMAT;\n\n // Date picker specific properties\n @property({ type: Boolean }) range = false;\n @property({ type: String, attribute: 'min-date' }) minDate?: string;\n @property({ type: String, attribute: 'max-date' }) maxDate?: string;\n @property({ type: Array, attribute: 'disabled-dates' }) disabledDates?: string[];\n\n // UI properties\n @property({ type: String }) type: DatePickerType = DatePickerType.Single;\n @property({ type: String }) size: DatePickerSize = DatePickerSize.Medium;\n @property({ type: String }) variant: DatePickerVariant = DatePickerVariant.Default;\n @property({ type: String }) placement: DatePickerPlacement = DatePickerPlacement.Auto;\n @property({ type: String }) label = '';\n @property({ type: String }) helper = '';\n @property({ type: String }) state: DatePickerState | INPUT_STATE = INPUT_STATE.Default;\n @property({ type: Boolean, attribute: 'use-select-dropdowns' }) useSelectDropdowns = false;\n\n // Calendar state\n @property({ reflect: true, type: Boolean, attribute: 'opened-calendar' }) openedCalendar = false;\n @property({ type: String }) mode: DatePickerMode = DatePickerMode.Day;\n \n\n\n // Internal state \n @state() private currentMode: DatePickerMode = DatePickerMode.Day;\n @state() private monthsShort = dayjs().localeData().monthsShort();\n @state() private months = dayjs().localeData().months();\n @state() private days = dayjs().localeData().weekdays();\n @state() private weekdaysShort = dayjs().localeData().weekdaysShort();\n @state() private inputFieldValue = '';\n @state() private currentYear = new Date().getFullYear();\n @state() private currentMonth = new Date().getMonth() + 1;\n @state() private currentDay = new Date().getDate();\n @state() private endYear?: number;\n @state() private endMonth?: number;\n @state() private endDay?: number;\n\n // Navigation dates for calendar display\n @state() navigationDates: INavigationDate = {\n start: {\n year: this.currentYear,\n month: this.currentMonth,\n day: this.currentDay,\n },\n };\n\n // Query selectors\n @query(`#${INPUT_FIELD_ID}`) dateInput!: HTMLElement;\n @query(`.${CALENDAR_CONTAINER_CLASS}`) calendarContainer!: HTMLElement;\n\n // Component constants\n private readonly INPUT_TYPE = 'calendar';\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.initializeComponent();\n \n // Add dropdown selection event listeners\n this.addEventListener('month-selected', this.handleMonthSelected.bind(this));\n this.addEventListener('year-selected', this.handleYearSelected.bind(this));\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // Controllers handle their own cleanup\n }\n\n override firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n this.initializeRangeIfNeeded();\n this.updateInputField();\n this.setupDropdownController();\n }\n\n private setupDropdownController(): void {\n // The dropdown controller will be set up dynamically when needed\n // since we have multiple dropdowns (month and year)\n }\n\n override willUpdate(changedProperties: PropertyValues): void {\n super.willUpdate(changedProperties);\n this.handlePropertyChanges(changedProperties);\n }\n\n /**\n * Initialize component state\n */\n private initializeComponent(): void {\n // Set up event listeners for calendar close requests\n this.addEventListener('calendar-close-request', () => {\n this.positioningController.closeCalendar();\n });\n }\n\n /**\n * Initialize range properties if range mode is enabled\n */\n private initializeRangeIfNeeded(): void {\n if (this.range) {\n this.endYear = this.currentYear;\n this.endMonth = this.currentMonth;\n this.endDay = this.currentDay;\n }\n }\n\n /**\n * Handle property changes with proper delegation\n */\n private handlePropertyChanges(changedProperties: PropertyValues): void {\n if (changedProperties.has('fieldFormat')) {\n this.updateInputField();\n }\n\n if (changedProperties.has('openedCalendar') && this.openedCalendar) {\n this.calendarController.updateCalendarDisplay();\n // Calendar positioning is now handled by SharedDropdownController in openCalendar()\n }\n\n if (changedProperties.has('dateValue') && this.dateValue) {\n this.handleDateValueChange();\n }\n\n if (this.hasDatePropertiesChanged(changedProperties)) {\n this.updateInputField();\n this.dispatchDateChange();\n }\n\n if (changedProperties.has('locale')) {\n this.updateLocale(this.locale);\n }\n }\n\n /**\n * Check if date-related properties have changed\n */\n private hasDatePropertiesChanged(changedProperties: PropertyValues): boolean {\n return (\n (changedProperties.has('currentDay') && changedProperties.get('currentDay')) ||\n (changedProperties.has('currentMonth') && changedProperties.get('currentMonth')) ||\n (changedProperties.has('currentYear') && changedProperties.get('currentYear'))\n );\n }\n\n /**\n * Handle date value change\n */\n private handleDateValueChange(): void {\n const dateObj = dayjs(this.dateValue, this.fieldFormat, true);\n if (dateObj.isValid()) {\n const { years, months, date } = dateObj.toObject();\n this.currentYear = years;\n this.currentMonth = months + 1;\n this.currentDay = date;\n this.navigationDates = {\n ...this.navigationDates,\n start: { year: years, month: months + 1, day: date },\n };\n }\n }\n\n // DatePickerHost interface implementation\n getCurrentDate(): Date {\n return new Date(this.currentYear, this.currentMonth - 1, this.currentDay);\n }\n\n formatDate(date: Date): string {\n return dayjs(date).format(this.fieldFormat);\n }\n\n parseDate(dateString: string): Date | null {\n const parsed = dayjs(dateString, this.fieldFormat, true);\n return parsed.isValid() ? parsed.toDate() : null;\n }\n\n // Delegation methods - following the architecture pattern\n\n /**\n * Get currently selected date - DELEGATES to selection controller\n */\n getSelectedDate(): Date | null {\n return this.selectionController.getSelectedDate();\n }\n\n /**\n * Select a date - DELEGATES to selection controller\n */\n selectDate(date: Date): void {\n this.selectionController.selectDate(date);\n }\n\n /**\n * Clear selection - DELEGATES to selection controller\n */\n clearSelection(): void {\n this.selectionController.clearSelection();\n }\n\n /**\n * Open calendar - DELEGATES to dropdown controller for better positioning\n */\n openCalendar(): void {\n console.log('openCalendar called');\n this.openedCalendar = true;\n this.requestUpdate();\n \n // Wait for DOM update, then setup positioning\n this.updateComplete.then(() => {\n console.log('DOM updated, checking elements:', {\n calendarContainer: !!this.calendarContainer,\n dateInput: !!this.dateInput\n });\n \n if (this.calendarContainer && this.dateInput) {\n console.log('Setting up dropdown controller');\n this.dropdownController.setElements(this.calendarContainer, this.dateInput);\n this.dropdownController.open();\n } else {\n console.error('Elements not found:', {\n calendarContainer: this.calendarContainer,\n dateInput: this.dateInput\n });\n }\n });\n }\n\n /**\n * Close calendar - DELEGATES to dropdown controller\n */\n closeCalendar(): void {\n this.openedCalendar = false;\n this.dropdownController.close();\n }\n\n /**\n * Toggle calendar - DELEGATES to dropdown controller\n */\n toggleCalendar(): void {\n if (this.openedCalendar) {\n this.closeCalendar();\n } else {\n this.openCalendar();\n }\n }\n\n /**\n * Handle keyboard events - DELEGATES to keyboard controller\n */\n handleKeyDown(event: KeyboardEvent): void {\n this.keyboardController.handleKeyDown(event);\n }\n\n // Utility methods\n private updateInputField(): void {\n if (this.range) {\n this.inputFieldValue = this.selectionController.formatSelectedRange();\n } else {\n this.inputFieldValue = this.selectionController.formatSelectedDate();\n }\n }\n\n private dispatchDateChange(): void {\n this.dispatchEvent(\n new CustomEvent(DATE_PICKER_EVENTS.DATE_CHANGE, {\n bubbles: true,\n composed: true,\n detail: { value: this.inputFieldValue },\n })\n );\n }\n\n private updateLocale(locale: string): void {\n dayjs.locale(locale);\n this.monthsShort = dayjs().localeData().monthsShort();\n this.months = dayjs().localeData().months();\n this.days = dayjs().localeData().weekdays();\n this.weekdaysShort = dayjs().localeData().weekdaysShort();\n }\n\n // Event handlers\n inputChanged(event: CustomEvent): void {\n this.inputFieldValue = event.detail.value;\n // Additional input validation logic here\n }\n\n onFocus(): void {\n this.dispatchEvent(\n new CustomEvent(DATE_PICKER_EVENTS.FOCUS, {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n // Navigation methods - delegates to controllers\n handleMonthChange = (event: CustomEvent) => {\n const selectedMonth = parseInt(event.detail.value, 10);\n this.handleMonthSelection(selectedMonth);\n };\n\n handleYearChange = (event: CustomEvent) => {\n const selectedYear = parseInt(event.detail.value, 10);\n this.handleYearSelection(selectedYear);\n };\n\n prevMonth = () => this.calendarController.navigateToPreviousMonth();\n nextMonth = () => this.calendarController.navigateToNextMonth();\n prevYear = () => this.calendarController.navigateToPreviousYear();\n nextYear = () => this.calendarController.navigateToNextYear();\n\n selectMonth = (month: number) => {\n this.currentMonth = month;\n this.navigationDates.start.month = month;\n this.currentMode = DatePickerMode.Day;\n this.calendarController.updateCalendarDisplay();\n };\n\n selectYear = (year: number) => {\n this.currentYear = year;\n this.navigationDates.start.year = year;\n this.currentMode = DatePickerMode.Day;\n this.calendarController.updateCalendarDisplay();\n };\n\n selectDay = (dayPresentation: IDayPresentation) => {\n const date = new Date(dayPresentation.year, dayPresentation.month, dayPresentation.date);\n this.selectDate(date);\n };\n\n // Dropdown event handlers\n private handleMonthSelected(event: Event) {\n const customEvent = event as CustomEvent;\n const monthIndex = customEvent.detail.monthIndex;\n this.selectMonth(monthIndex + 1); // selectMonth expects 1-based month\n }\n\n private handleYearSelected(event: Event) {\n const customEvent = event as CustomEvent;\n const year = customEvent.detail.year; \n this.selectYear(year);\n }\n\n // Direct selection handlers for dropdown templates\n private handleMonthSelection(monthIndex: number) {\n this.selectMonth(monthIndex); // monthIndex is already 1-based from renderMonthDropdown\n }\n\n private handleYearSelection(year: number) {\n this.selectYear(year);\n }\n\n // Render methods following the multiple render pattern\n protected override render(): TemplateResult {\n return html`${choose(this.type, [\n [DatePickerType.Single, () => this.renderSingle()],\n [DatePickerType.Range, () => this.renderRange()],\n [DatePickerType.Multiple, () => this.renderMultiple()],\n ])}`;\n }\n\n private renderSingle(): TemplateResult {\n return html`\n <div\n class=\"${classMap({\n 'datepicker-container': true,\n 'datepicker-disabled': this.disabled,\n [`datepicker-size-${this.size}`]: true,\n [`datepicker-variant-${this.variant}`]: true,\n })}\"\n data-theme=\"${this.currentTheme}\"\n >\n <nr-input\n id=\"${INPUT_FIELD_ID}\"\n .type=\"${this.INPUT_TYPE}\"\n .value=\"${this.inputFieldValue}\"\n .size=\"${this.size}\"\n .state=\"${this.state}\"\n .disabled=\"${this.disabled}\"\n .required=\"${this.required}\"\n @input=\"${this.inputChanged}\"\n @focus=\"${this.onFocus}\"\n @click=\"${this.toggleCalendar}\"\n @keydown=\"${this.handleKeyDown}\"\n role=\"combobox\"\n aria-expanded=\"${this.openedCalendar}\"\n aria-haspopup=\"dialog\"\n aria-label=\"${this.label || 'Select date'}\"\n >\n ${this.label ? html`<span slot=\"label\">${this.label}</span>` : nothing}\n ${this.helper ? html`<span slot=\"helper-text\">${this.helper}</span>` : nothing}\n </nr-input>\n ${this.openedCalendar ? this.renderCalendar() : nothing}\n </div>\n `;\n }\n\n private renderRange(): TemplateResult {\n // Range-specific rendering logic\n return this.renderSingle(); // For now, use single rendering\n }\n\n private renderMultiple(): TemplateResult {\n // Multiple selection rendering logic\n return this.renderSingle(); // For now, use single rendering\n }\n\n private renderCalendar(): TemplateResult {\n return html`\n <div\n class=\"${classMap({\n [CALENDAR_CONTAINER_CLASS]: true,\n 'calendar-range': this.range && this.currentMode === DatePickerMode.Day,\n [`placement-${this.placement}`]: true,\n })}\"\n role=\"dialog\"\n aria-label=\"Calendar\"\n part=\"calendar\"\n >\n <div class=\"calendar-header\" part=\"header\">\n <nr-button\n type=\"text\"\n class=\"header-prev-button prev-month\"\n .icon=\"${['angle-left']}\"\n @click=\"${this.prevMonth}\"\n aria-label=\"Previous month\"\n ></nr-button>\n ${this.renderCalendarHeader()}\n <nr-button\n type=\"text\"\n class=\"header-next-button next-month\"\n .icon=\"${['angle-right']}\"\n @click=\"${this.nextMonth}\"\n aria-label=\"Next month\"\n ></nr-button>\n </div>\n <div class=\"calendar-content\">\n ${this.renderCalendarBody()}\n </div>\n </div>\n `;\n }\n\n private get monthOptions() {\n return this.months.map((month, index) => ({\n value: (index + 1).toString(),\n label: capitalizeFirstLetter(month)\n }));\n }\n\n private get yearOptions() {\n const currentYear = this.navigationDates.start.year;\n const years = [];\n for (let year = currentYear - 10; year <= currentYear + 10; year++) {\n years.push({\n value: year.toString(),\n label: year.toString()\n });\n }\n return years;\n }\n\n private renderCalendarHeader(): TemplateResult {\n return html`\n <div class=\"year-month-header\">\n ${this.currentMode !== DatePickerMode.Year\n ? html`\n <div class=\"month-selector\">\n <hy-select\n .options=\"${this.monthOptions}\"\n .value=\"${this.navigationDates.start.month.toString()}\"\n .defaultValue=\"${[this.navigationDates.start.month.toString()]}\"\n @nr-change=\"${this.handleMonthChange}\"\n size=\"small\"\n class=\"month-select\"\n placeholder=\"\"\n .clearable=${false}\n max-height=\"200px\"\n ></hy-select>\n </div>\n `\n : nothing}\n\n <div class=\"current-year-container\">\n <hy-select\n .options=\"${this.yearOptions}\"\n .value=\"${this.navigationDates.start.year.toString()}\"\n .defaultValue=\"${[this.navigationDates.start.year.toString()]}\"\n @nr-change=\"${this.handleYearChange}\"\n size=\"small\"\n class=\"year-select\"\n placeholder=\"\"\n .clearable=${false}\n max-height=\"200px\"\n ></hy-select>\n <div class=\"year-icons-toggler\">\n <nr-button\n class=\"next-year\"\n .icon=\"${['caret-up']}\"\n @click=\"${this.nextYear}\"\n aria-label=\"Next year\"\n ></nr-button>\n <nr-button\n class=\"previous-year\"\n .icon=\"${['caret-down']}\"\n @click=\"${this.prevYear}\"\n aria-label=\"Previous year\"\n ></nr-button>\n </div>\n </div>\n </div>\n `;\n }\n\n private renderCalendarBody(): TemplateResult {\n return html`${choose(this.currentMode, [\n [DatePickerMode.Day, () => this.renderDays()],\n [DatePickerMode.Month, () => this.renderMonths()],\n [DatePickerMode.Year, () => this.renderYears()],\n ])}`;\n }\n\n private renderDays(): TemplateResult {\n const isRange = this.range && this.currentMode === DatePickerMode.Day;\n return renderDays(\n this.weekdaysShort,\n this.navigationDates,\n (date: IDayPresentation) => this.selectDay(date),\n {\n currentYear: this.currentYear,\n currentMonth: this.currentMonth,\n currentDay: this.currentDay,\n endYear: this.endYear || this.currentYear,\n endMonth: this.endMonth || this.currentMonth,\n endDay: this.endDay || this.currentDay,\n },\n isRange,\n this.days\n );\n }\n\n private renderMonths(): TemplateResult {\n return renderMonthsTemplate(this.monthsShort, this.currentMonth, this.selectMonth);\n }\n\n private renderYears(): TemplateResult {\n return renderYearsTemplate(this.navigationDates.start.year, this.selectYear);\n }\n\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"datepicker.component.js","sourceRoot":"","sources":["../../../../src/components/datepicker/datepicker.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { LitElement, html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { NuralyUIBaseMixin } from '@nuralyui/common/mixins';\nimport { styles } from './datepicker.style.js';\nimport {\n DatePickerMode,\n DatePickerType,\n DatePickerSize,\n DatePickerVariant,\n DatePickerPlacement,\n INavigationDate,\n IDayPresentation,\n DatePickerState,\n} from './datepicker.types.js';\nimport {\n DEFAULT_DATE_FORMAT,\n DEFAULT_LOCALE,\n INPUT_FIELD_ID,\n CALENDAR_CONTAINER_CLASS,\n DATE_PICKER_EVENTS,\n} from './datepicker.constant.js';\nimport {\n DatePickerCalendarController,\n DatePickerSelectionController,\n DatePickerKeyboardController,\n DatePickerPositioningController,\n} from './controllers/index.js';\nimport { SharedDropdownController } from '@nuralyui/common/controllers';\nimport { DatePickerHost } from './interfaces/base-controller.interface.js';\nimport dayjs from 'dayjs';\nimport { renderMonthsTemplate } from './templates/months.template.js';\nimport { renderYearsTemplate } from './templates/years.template.js';\nimport { renderDays } from './templates/days.template.js';\n\nimport { capitalizeFirstLetter } from './utils/string.helper.js';\nimport './utils/locale.helper.js';\nimport { INPUT_STATE } from '../input/input.types.js';\n\n/**\n * HyDatePicker - A comprehensive date picker component\n * \n * @element nr-datepicker\n * \n * @fires nr-date-change - Fired when a date is selected\n * @fires nr-range-change - Fired when a date range is selected\n * @fires nr-calendar-open - Fired when calendar is opened\n * @fires nr-calendar-close - Fired when calendar is closed\n * @fires nr-focus - Fired when component receives focus\n * @fires nr-blur - Fired when component loses focus\n * @fires nr-validation - Fired when validation state changes\n * \n * @slot label - Label content for the input field\n * @slot helper-text - Helper text content below the input field\n * @slot icon - Icon content for the input field\n * \n * @csspart input - The input field part\n * @csspart calendar - The calendar container part\n * @csspart header - The calendar header part\n * @csspart days - The days grid part\n * @csspart day - Individual day cell part\n * @csspart months - The months grid part\n * @csspart years - The years grid part\n * \n * @example\n * ```html\n * <nr-datepicker \n * label=\"Select Date\"\n * field-format=\"DD/MM/YYYY\"\n * @nr-date-change=\"${this.handleDateChange}\">\n * </nr-datepicker>\n * ```\n * \n * @example Range picker\n * ```html\n * <nr-datepicker \n * range\n * label=\"Select Date Range\"\n * @nr-range-change=\"${this.handleRangeChange}\">\n * </nr-datepicker>\n * ```\n */\n@customElement('nr-datepicker')\nexport class HyDatePickerElement extends NuralyUIBaseMixin(LitElement) implements DatePickerHost {\n static override styles = styles;\n override requiredComponents = ['nr-input', 'nr-button', 'nr-icon', 'hy-select'];\n\n // Controllers - following the delegation pattern\n private calendarController = new DatePickerCalendarController(this);\n private selectionController = new DatePickerSelectionController(this);\n private keyboardController = new DatePickerKeyboardController(this, this.calendarController, this.selectionController);\n private positioningController = new DatePickerPositioningController(this);\n private dropdownController = new SharedDropdownController(this);\n\n // Core properties following the architecture pattern\n @property({ type: String }) name = '';\n @property({ type: String }) value = '';\n @property({ type: String, attribute: 'date-value' }) dateValue = '';\n @property({ type: String, attribute: 'default-value' }) defaultValue = '';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) required = false;\n @property({ type: String }) locale = DEFAULT_LOCALE;\n @property({ type: String, attribute: 'field-format' }) fieldFormat = DEFAULT_DATE_FORMAT;\n\n // Date picker specific properties\n @property({ type: Boolean }) range = false;\n @property({ type: String, attribute: 'min-date' }) minDate?: string;\n @property({ type: String, attribute: 'max-date' }) maxDate?: string;\n @property({ type: Array, attribute: 'disabled-dates' }) disabledDates?: string[];\n\n // UI properties\n @property({ type: String }) type: DatePickerType = DatePickerType.Single;\n @property({ type: String }) size: DatePickerSize = DatePickerSize.Medium;\n @property({ type: String }) variant: DatePickerVariant = DatePickerVariant.Default;\n @property({ type: String }) placement: DatePickerPlacement = DatePickerPlacement.Auto;\n @property({ type: String }) label = '';\n @property({ type: String }) helper = '';\n @property({ type: String }) placeholder = '';\n @property({ type: String }) state: DatePickerState | INPUT_STATE = INPUT_STATE.Default;\n @property({ type: Boolean, attribute: 'use-select-dropdowns' }) useSelectDropdowns = false;\n\n // Calendar state\n @property({ reflect: true, type: Boolean, attribute: 'opened-calendar' }) openedCalendar = false;\n @property({ type: String }) mode: DatePickerMode = DatePickerMode.Day;\n \n\n\n // Internal state \n @state() private currentMode: DatePickerMode = DatePickerMode.Day;\n @state() private monthsShort = dayjs().localeData().monthsShort();\n @state() private months = dayjs().localeData().months();\n @state() private days = dayjs().localeData().weekdays();\n @state() private weekdaysShort = dayjs().localeData().weekdaysShort();\n @state() private inputFieldValue = '';\n @state() private currentYear = new Date().getFullYear();\n @state() private currentMonth = new Date().getMonth() + 1;\n @state() private currentDay = new Date().getDate();\n @state() private endYear?: number;\n @state() private endMonth?: number;\n @state() private endDay?: number;\n\n // Navigation dates for calendar display\n @state() navigationDates: INavigationDate = {\n start: {\n year: this.currentYear,\n month: this.currentMonth,\n day: this.currentDay,\n },\n };\n\n // Query selectors\n @query(`#${INPUT_FIELD_ID}`) dateInput!: HTMLElement;\n @query(`.${CALENDAR_CONTAINER_CLASS}`) calendarContainer!: HTMLElement;\n\n // Component constants\n private readonly INPUT_TYPE = 'calendar';\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.initializeComponent();\n \n // Add dropdown selection event listeners\n this.addEventListener('month-selected', this.handleMonthSelected.bind(this));\n this.addEventListener('year-selected', this.handleYearSelected.bind(this));\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // Controllers handle their own cleanup\n }\n\n override firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n this.initializeRangeIfNeeded();\n this.updateInputField();\n this.setupDropdownController();\n }\n\n private setupDropdownController(): void {\n // The dropdown controller will be set up dynamically when needed\n // since we have multiple dropdowns (month and year)\n }\n\n override willUpdate(changedProperties: PropertyValues): void {\n super.willUpdate(changedProperties);\n this.handlePropertyChanges(changedProperties);\n }\n\n /**\n * Initialize component state\n */\n private initializeComponent(): void {\n // Set up event listeners for calendar close requests\n this.addEventListener('calendar-close-request', () => {\n this.positioningController.closeCalendar();\n });\n }\n\n /**\n * Initialize range properties if range mode is enabled\n */\n private initializeRangeIfNeeded(): void {\n if (this.range) {\n this.endYear = this.currentYear;\n this.endMonth = this.currentMonth;\n this.endDay = this.currentDay;\n }\n }\n\n /**\n * Handle property changes with proper delegation\n */\n private handlePropertyChanges(changedProperties: PropertyValues): void {\n if (changedProperties.has('fieldFormat')) {\n this.updateInputField();\n }\n\n if (changedProperties.has('openedCalendar') && this.openedCalendar) {\n this.calendarController.updateCalendarDisplay();\n // Calendar positioning is now handled by SharedDropdownController in openCalendar()\n }\n\n if (changedProperties.has('dateValue') && this.dateValue) {\n this.handleDateValueChange();\n }\n\n if (this.hasDatePropertiesChanged(changedProperties)) {\n this.updateInputField();\n this.dispatchDateChange();\n }\n\n if (changedProperties.has('locale')) {\n this.updateLocale(this.locale);\n }\n }\n\n /**\n * Check if date-related properties have changed\n */\n private hasDatePropertiesChanged(changedProperties: PropertyValues): boolean {\n return (\n (changedProperties.has('currentDay') && changedProperties.get('currentDay')) ||\n (changedProperties.has('currentMonth') && changedProperties.get('currentMonth')) ||\n (changedProperties.has('currentYear') && changedProperties.get('currentYear'))\n );\n }\n\n /**\n * Handle date value change\n */\n private handleDateValueChange(): void {\n const dateObj = dayjs(this.dateValue, this.fieldFormat, true);\n if (dateObj.isValid()) {\n const { years, months, date } = dateObj.toObject();\n this.currentYear = years;\n this.currentMonth = months + 1;\n this.currentDay = date;\n this.navigationDates = {\n ...this.navigationDates,\n start: { year: years, month: months + 1, day: date },\n };\n }\n }\n\n // DatePickerHost interface implementation\n getCurrentDate(): Date {\n return new Date(this.currentYear, this.currentMonth - 1, this.currentDay);\n }\n\n formatDate(date: Date): string {\n return dayjs(date).format(this.fieldFormat);\n }\n\n parseDate(dateString: string): Date | null {\n const parsed = dayjs(dateString, this.fieldFormat, true);\n return parsed.isValid() ? parsed.toDate() : null;\n }\n\n // Delegation methods - following the architecture pattern\n\n /**\n * Get currently selected date - DELEGATES to selection controller\n */\n getSelectedDate(): Date | null {\n return this.selectionController.getSelectedDate();\n }\n\n /**\n * Select a date - DELEGATES to selection controller\n */\n selectDate(date: Date): void {\n this.selectionController.selectDate(date);\n }\n\n /**\n * Clear selection - DELEGATES to selection controller\n */\n clearSelection(): void {\n this.selectionController.clearSelection();\n }\n\n /**\n * Open calendar - DELEGATES to dropdown controller for better positioning\n */\n openCalendar(): void {\n console.log('openCalendar called');\n this.openedCalendar = true;\n this.requestUpdate();\n \n // Wait for DOM update, then setup positioning\n this.updateComplete.then(() => {\n console.log('DOM updated, checking elements:', {\n calendarContainer: !!this.calendarContainer,\n dateInput: !!this.dateInput\n });\n \n if (this.calendarContainer && this.dateInput) {\n console.log('Setting up dropdown controller');\n this.dropdownController.setElements(this.calendarContainer, this.dateInput);\n this.dropdownController.open();\n } else {\n console.error('Elements not found:', {\n calendarContainer: this.calendarContainer,\n dateInput: this.dateInput\n });\n }\n });\n }\n\n /**\n * Close calendar - DELEGATES to dropdown controller\n */\n closeCalendar(): void {\n this.openedCalendar = false;\n this.dropdownController.close();\n }\n\n /**\n * Toggle calendar - DELEGATES to dropdown controller\n */\n toggleCalendar(): void {\n if (this.openedCalendar) {\n this.closeCalendar();\n } else {\n this.openCalendar();\n }\n }\n\n /**\n * Handle keyboard events - DELEGATES to keyboard controller\n */\n handleKeyDown(event: KeyboardEvent): void {\n this.keyboardController.handleKeyDown(event);\n }\n\n // Utility methods\n private updateInputField(): void {\n if (this.range) {\n this.inputFieldValue = this.selectionController.formatSelectedRange();\n } else {\n this.inputFieldValue = this.selectionController.formatSelectedDate();\n }\n }\n\n private dispatchDateChange(): void {\n this.dispatchEvent(\n new CustomEvent(DATE_PICKER_EVENTS.DATE_CHANGE, {\n bubbles: true,\n composed: true,\n detail: { value: this.inputFieldValue },\n })\n );\n }\n\n private updateLocale(locale: string): void {\n dayjs.locale(locale);\n this.monthsShort = dayjs().localeData().monthsShort();\n this.months = dayjs().localeData().months();\n this.days = dayjs().localeData().weekdays();\n this.weekdaysShort = dayjs().localeData().weekdaysShort();\n }\n\n // Event handlers\n inputChanged(event: CustomEvent): void {\n this.inputFieldValue = event.detail.value;\n // Additional input validation logic here\n }\n\n onFocus(): void {\n this.dispatchEvent(\n new CustomEvent(DATE_PICKER_EVENTS.FOCUS, {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n // Navigation methods - delegates to controllers\n handleMonthChange = (event: CustomEvent) => {\n const selectedMonth = parseInt(event.detail.value, 10);\n this.handleMonthSelection(selectedMonth);\n };\n\n handleYearChange = (event: CustomEvent) => {\n const selectedYear = parseInt(event.detail.value, 10);\n this.handleYearSelection(selectedYear);\n };\n\n prevMonth = () => this.calendarController.navigateToPreviousMonth();\n nextMonth = () => this.calendarController.navigateToNextMonth();\n prevYear = () => this.calendarController.navigateToPreviousYear();\n nextYear = () => this.calendarController.navigateToNextYear();\n\n selectMonth = (month: number) => {\n this.currentMonth = month;\n this.navigationDates.start.month = month;\n this.currentMode = DatePickerMode.Day;\n this.calendarController.updateCalendarDisplay();\n };\n\n selectYear = (year: number) => {\n this.currentYear = year;\n this.navigationDates.start.year = year;\n this.currentMode = DatePickerMode.Day;\n this.calendarController.updateCalendarDisplay();\n };\n\n selectDay = (dayPresentation: IDayPresentation) => {\n const date = new Date(dayPresentation.year, dayPresentation.month, dayPresentation.date);\n this.selectDate(date);\n };\n\n // Dropdown event handlers\n private handleMonthSelected(event: Event) {\n const customEvent = event as CustomEvent;\n const monthIndex = customEvent.detail.monthIndex;\n this.selectMonth(monthIndex + 1); // selectMonth expects 1-based month\n }\n\n private handleYearSelected(event: Event) {\n const customEvent = event as CustomEvent;\n const year = customEvent.detail.year; \n this.selectYear(year);\n }\n\n // Direct selection handlers for dropdown templates\n private handleMonthSelection(monthIndex: number) {\n this.selectMonth(monthIndex); // monthIndex is already 1-based from renderMonthDropdown\n }\n\n private handleYearSelection(year: number) {\n this.selectYear(year);\n }\n\n // Render methods following the multiple render pattern\n protected override render(): TemplateResult {\n return html`${choose(this.type, [\n [DatePickerType.Single, () => this.renderSingle()],\n [DatePickerType.Range, () => this.renderRange()],\n [DatePickerType.Multiple, () => this.renderMultiple()],\n ])}`;\n }\n\n private renderSingle(): TemplateResult {\n return html`\n <div\n class=\"${classMap({\n 'datepicker-container': true,\n 'datepicker-disabled': this.disabled,\n [`datepicker-size-${this.size}`]: true,\n [`datepicker-variant-${this.variant}`]: true,\n })}\"\n data-theme=\"${this.currentTheme}\"\n >\n <nr-input\n id=\"${INPUT_FIELD_ID}\"\n .type=\"${this.INPUT_TYPE}\"\n .value=\"${this.inputFieldValue}\"\n .placeholder=\"${this.placeholder}\"\n .size=\"${this.size}\"\n .state=\"${this.state}\"\n .disabled=\"${this.disabled}\"\n .required=\"${this.required}\"\n @input=\"${this.inputChanged}\"\n @focus=\"${this.onFocus}\"\n @click=\"${this.toggleCalendar}\"\n @keydown=\"${this.handleKeyDown}\"\n role=\"combobox\"\n aria-expanded=\"${this.openedCalendar}\"\n aria-haspopup=\"dialog\"\n aria-label=\"${this.label || 'Select date'}\"\n >\n ${this.label ? html`<span slot=\"label\">${this.label}</span>` : nothing}\n ${this.helper ? html`<span slot=\"helper-text\">${this.helper}</span>` : nothing}\n </nr-input>\n ${this.openedCalendar ? this.renderCalendar() : nothing}\n </div>\n `;\n }\n\n private renderRange(): TemplateResult {\n // Range-specific rendering logic\n return this.renderSingle(); // For now, use single rendering\n }\n\n private renderMultiple(): TemplateResult {\n // Multiple selection rendering logic\n return this.renderSingle(); // For now, use single rendering\n }\n\n private renderCalendar(): TemplateResult {\n return html`\n <div\n class=\"${classMap({\n [CALENDAR_CONTAINER_CLASS]: true,\n 'calendar-range': this.range && this.currentMode === DatePickerMode.Day,\n [`placement-${this.placement}`]: true,\n })}\"\n role=\"dialog\"\n aria-label=\"Calendar\"\n part=\"calendar\"\n >\n <div class=\"calendar-header\" part=\"header\">\n <nr-button\n type=\"text\"\n class=\"header-prev-button prev-month\"\n .icon=\"${['angle-left']}\"\n @click=\"${this.prevMonth}\"\n aria-label=\"Previous month\"\n ></nr-button>\n ${this.renderCalendarHeader()}\n <nr-button\n type=\"text\"\n class=\"header-next-button next-month\"\n .icon=\"${['angle-right']}\"\n @click=\"${this.nextMonth}\"\n aria-label=\"Next month\"\n ></nr-button>\n </div>\n <div class=\"calendar-content\">\n ${this.renderCalendarBody()}\n </div>\n </div>\n `;\n }\n\n private get monthOptions() {\n return this.months.map((month, index) => ({\n value: (index + 1).toString(),\n label: capitalizeFirstLetter(month)\n }));\n }\n\n private get yearOptions() {\n const currentYear = this.navigationDates.start.year;\n const years = [];\n for (let year = currentYear - 10; year <= currentYear + 10; year++) {\n years.push({\n value: year.toString(),\n label: year.toString()\n });\n }\n return years;\n }\n\n private renderCalendarHeader(): TemplateResult {\n return html`\n <div class=\"year-month-header\">\n ${this.currentMode !== DatePickerMode.Year\n ? html`\n <div class=\"month-selector\">\n <hy-select\n .options=\"${this.monthOptions}\"\n .value=\"${this.navigationDates.start.month.toString()}\"\n .defaultValue=\"${[this.navigationDates.start.month.toString()]}\"\n @nr-change=\"${this.handleMonthChange}\"\n size=\"small\"\n class=\"month-select\"\n placeholder=\"\"\n .clearable=${false}\n max-height=\"200px\"\n ></hy-select>\n </div>\n `\n : nothing}\n\n <div class=\"current-year-container\">\n <hy-select\n .options=\"${this.yearOptions}\"\n .value=\"${this.navigationDates.start.year.toString()}\"\n .defaultValue=\"${[this.navigationDates.start.year.toString()]}\"\n @nr-change=\"${this.handleYearChange}\"\n size=\"small\"\n class=\"year-select\"\n placeholder=\"\"\n .clearable=${false}\n max-height=\"200px\"\n ></hy-select>\n <div class=\"year-icons-toggler\">\n <nr-button\n class=\"next-year\"\n .icon=\"${['caret-up']}\"\n @click=\"${this.nextYear}\"\n aria-label=\"Next year\"\n ></nr-button>\n <nr-button\n class=\"previous-year\"\n .icon=\"${['caret-down']}\"\n @click=\"${this.prevYear}\"\n aria-label=\"Previous year\"\n ></nr-button>\n </div>\n </div>\n </div>\n `;\n }\n\n private renderCalendarBody(): TemplateResult {\n return html`${choose(this.currentMode, [\n [DatePickerMode.Day, () => this.renderDays()],\n [DatePickerMode.Month, () => this.renderMonths()],\n [DatePickerMode.Year, () => this.renderYears()],\n ])}`;\n }\n\n private renderDays(): TemplateResult {\n const isRange = this.range && this.currentMode === DatePickerMode.Day;\n return renderDays(\n this.weekdaysShort,\n this.navigationDates,\n (date: IDayPresentation) => this.selectDay(date),\n {\n currentYear: this.currentYear,\n currentMonth: this.currentMonth,\n currentDay: this.currentDay,\n endYear: this.endYear || this.currentYear,\n endMonth: this.endMonth || this.currentMonth,\n endDay: this.endDay || this.currentDay,\n },\n isRange,\n this.days\n );\n }\n\n private renderMonths(): TemplateResult {\n return renderMonthsTemplate(this.monthsShort, this.currentMonth, this.selectMonth);\n }\n\n private renderYears(): TemplateResult {\n return renderYearsTemplate(this.navigationDates.start.year, this.selectYear);\n }\n\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.constant.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"datepicker.constant.js","sourceRoot":"","sources":["../../../../src/components/datepicker/datepicker.constant.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,YAAY;IACzB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,UAAU;CACb,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,iBAAiB;IAC/B,aAAa,EAAE,kBAAkB;IACjC,cAAc,EAAE,mBAAmB;IACnC,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,eAAe;CACnB,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * Date picker component constants\n */\n\nexport const EMPTY_STRING = '';\n\nexport const DEFAULT_LOCALE = 'en';\n\nexport const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY';\n\nexport const CALENDAR_HEADER_HEIGHT = 60;\n\nexport const CALENDAR_DAY_HEIGHT = 40;\n\nexport const CALENDAR_ROWS = 6;\n\nexport const CALENDAR_COLS = 7;\n\nexport const YEARS_GRID_SIZE = 12;\n\nexport const MONTHS_PER_ROW = 3;\n\nexport const DECADE_SPAN = 10;\n\nexport const MIN_YEAR = 1900;\n\nexport const MAX_YEAR = 2100;\n\nexport const ANIMATION_DURATION = 200;\n\nexport const CALENDAR_Z_INDEX = 1000;\n\nexport const INPUT_FIELD_ID = 'date-input';\n\nexport const CALENDAR_CONTAINER_CLASS = 'calendar-container';\n\nexport const DATE_SEPARATOR = '-';\n\nexport const RANGE_SEPARATOR = ' - ';\n\nexport const KEYBOARD_KEYS = {\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n ARROW_UP: 'ArrowUp',\n ARROW_DOWN: 'ArrowDown',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n TAB: 'Tab',\n HOME: 'Home',\n END: 'End',\n PAGE_UP: 'PageUp',\n PAGE_DOWN: 'PageDown',\n} as const;\n\nexport const ARIA_LABELS = {\n CALENDAR: 'Calendar',\n PREVIOUS_MONTH: 'Previous month',\n NEXT_MONTH: 'Next month',\n PREVIOUS_YEAR: 'Previous year',\n NEXT_YEAR: 'Next year',\n CHOOSE_DATE: 'Choose date',\n SELECTED_DATE: 'Selected date',\n TODAY: 'Today',\n WEEK: 'Week',\n} as const;\n\nexport const DATE_PICKER_EVENTS = {\n DATE_CHANGE: 'nr-date-change',\n RANGE_CHANGE: 'nr-range-change',\n CALENDAR_OPEN: 'nr-calendar-open',\n CALENDAR_CLOSE: 'nr-calendar-close',\n FOCUS: 'nr-focus',\n BLUR: 'nr-blur',\n VALIDATION: 'nr-validation',\n} as const;\n"]}
|
package/datepicker.style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.style.js","sourceRoot":"","sources":["../../../src/components/datepicker/datepicker.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmbjB,CAAC","sourcesContent":["import { css } from 'lit';\nimport { styleVariables } from './datepicker.style.variables.js';\n\n/**\n * Datepicker component styles for the Hybrid UI Library\n * \n * This file contains all the styling for the nr-datepicker component, including:\n * - Base datepicker styles with CSS custom properties for theming\n * - Multiple datepicker states (default, disabled, focused)\n * - Size variations (small, medium, large)\n * - Calendar styling and positioning\n * - Date selection states and range highlighting\n * - Focus, disabled, and validation states\n * - Dark theme support\n * \n * The styling system uses CSS custom properties with fallbacks to allow\n * for both global and local customization of datepicker appearance.\n */\n\nexport const styles = css`\n ${styleVariables}\n\n :host {\n width: fit-content;\n display: block;\n font-family: var(--nuraly-datepicker-font-family, var(--nuraly-datepicker-local-font-family));\n }\n\n /* Host attribute selectors for configuration */\n :host([disabled]) {\n opacity: var(--nuraly-datepicker-disabled-opacity, var(--nuraly-datepicker-local-disabled-opacity));\n pointer-events: none;\n }\n\n :host([range]) {\n --nuraly-datepicker-local-calendar-width: 600px;\n }\n\n /* Container styles */\n .datepicker-container {\n position: relative;\n display: block;\n width: var(--nuraly-datepicker-width, var(--nuraly-datepicker-local-width));\n font-family: var(--nuraly-datepicker-font-family, var(--nuraly-datepicker-local-font-family));\n /* Allow calendar to overflow container without causing scroll */\n overflow: visible;\n }\n\n .datepicker-disabled {\n opacity: var(--nuraly-datepicker-disabled-opacity, var(--nuraly-datepicker-local-disabled-opacity));\n pointer-events: none;\n }\n\n /* Size variants */\n .datepicker-size-small {\n --nuraly-datepicker-local-day-size: var(--nuraly-datepicker-local-small-day-size);\n --nuraly-datepicker-local-font-size: var(--nuraly-datepicker-local-small-font-size);\n }\n\n .datepicker-size-medium {\n --nuraly-datepicker-local-day-size: var(--nuraly-datepicker-local-medium-day-size);\n --nuraly-datepicker-local-font-size: var(--nuraly-datepicker-local-medium-font-size);\n }\n\n .datepicker-size-large {\n --nuraly-datepicker-local-day-size: var(--nuraly-datepicker-local-large-day-size);\n --nuraly-datepicker-local-font-size: var(--nuraly-datepicker-local-large-font-size);\n }\n\n /* Calendar container */\n .calendar-container {\n position: fixed;\n z-index: var(--nuraly-datepicker-calendar-z-index, var(--nuraly-datepicker-local-calendar-z-index));\n user-select: none;\n padding: var(--nuraly-datepicker-calendar-padding, var(--nuraly-datepicker-local-calendar-padding));\n width: var(--nuraly-datepicker-calendar-width, var(--nuraly-datepicker-local-calendar-width));\n height: var(--nuraly-datepicker-calendar-height, var(--nuraly-datepicker-local-calendar-height));\n background-color: var(--nuraly-datepicker-background-color, var(--nuraly-datepicker-local-background-color));\n border: var(--nuraly-datepicker-border-width, var(--nuraly-datepicker-local-border-width)) solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n border-radius: var(--nuraly-datepicker-border-radius, var(--nuraly-datepicker-local-border-radius));\n box-shadow: var(--nuraly-datepicker-box-shadow, var(--nuraly-datepicker-local-box-shadow));\n animation: calendar-slide-in var(--nuraly-datepicker-calendar-animation-duration, var(--nuraly-datepicker-local-calendar-animation-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n }\n\n .calendar-range {\n width: calc(var(--nuraly-datepicker-calendar-width, var(--nuraly-datepicker-local-calendar-width)) * 2);\n }\n\n /* Calendar header */\n .calendar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--nuraly-datepicker-header-padding, var(--nuraly-datepicker-local-header-padding));\n height: var(--nuraly-datepicker-header-height, var(--nuraly-datepicker-local-header-height));\n border-bottom: var(--nuraly-datepicker-border-width, var(--nuraly-datepicker-local-border-width)) solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n background: var(--nuraly-datepicker-header-background, var(--nuraly-datepicker-local-header-background));\n }\n\n .year-month-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n justify-content: center;\n }\n\n .current-year-container {\n display: inline-flex;\n align-items: center;\n gap: calc(var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap)) / 2);\n }\n\n .year-icons-toggler {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n /* Calendar content */\n .calendar-content {\n padding: var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap));\n padding-bottom: calc(var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap)) / 2);\n }\n\n /* Button customizations */\n nr-button {\n --nuraly-button-border-color: transparent;\n --nuraly-button-background-color: transparent;\n --nuraly-button-text-color: var(--nuraly-datepicker-text-color, var(--nuraly-datepicker-local-text-color));\n --nuraly-button-hover-background-color: var(--nuraly-datepicker-hover-color, var(--nuraly-datepicker-local-hover-color));\n --nuraly-button-transition-duration: var(--nuraly-datepicker-transition-duration, var(--nuraly-datepicker-local-transition-duration));\n }\n\n .toggle-year-view,\n .toggle-month-view {\n --nuraly-button-font-weight: var(--nuraly-datepicker-header-font-weight, var(--nuraly-datepicker-local-header-font-weight));\n --nuraly-button-font-size: var(--nuraly-datepicker-header-font-size, var(--nuraly-datepicker-local-header-font-size));\n --nuraly-button-padding: 4px 20px 4px 8px;\n --nuraly-button-border-radius: 6px;\n --nuraly-button-border: 1px solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n --nuraly-button-background-color: #ffffff;\n --nuraly-button-hover-border-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n --nuraly-button-hover-background-color: #ffffff;\n --nuraly-button-active-background-color: var(--nuraly-datepicker-hover-background, var(--nuraly-datepicker-local-hover-background));\n --nuraly-button-transition: all 0.2s;\n position: relative;\n min-width: 80px;\n }\n\n .toggle-month-view::after,\n .toggle-year-view::after {\n content: '';\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n height: 0;\n border-left: 3px solid transparent;\n border-right: 3px solid transparent;\n border-top: 3px solid rgba(0, 0, 0, 0.45);\n transition: all 0.2s;\n }\n\n .toggle-month-view:hover::after,\n .toggle-year-view:hover::after {\n border-top-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n }\n\n .next-year,\n .previous-year {\n --nuraly-button-width: 16px;\n --nuraly-button-height: 12px;\n --nuraly-button-padding: 0;\n --nuraly-button-min-width: auto;\n --nuraly-button-border-radius: 2px;\n --nuraly-button-text-color: rgba(0, 0, 0, 0.45);\n --nuraly-button-hover-text-color: rgba(0, 0, 0, 0.85);\n --nuraly-button-hover-background-color: rgba(0, 0, 0, 0.06);\n }\n\n .header-prev-button,\n .header-next-button {\n --nuraly-button-width: 24px;\n --nuraly-button-height: 24px;\n --nuraly-button-padding: 0;\n --nuraly-button-min-width: auto;\n --nuraly-button-border-radius: 2px;\n --nuraly-button-text-color: rgba(0, 0, 0, 0.45);\n --nuraly-button-hover-text-color: rgba(0, 0, 0, 0.85);\n --nuraly-button-hover-background-color: rgba(0, 0, 0, 0.06);\n --nuraly-button-transition: all 0.2s;\n }\n\n .header-prev-button:hover,\n .header-next-button:hover {\n --nuraly-button-background-color: rgba(0, 0, 0, 0.06);\n }\n\n /* Placement variants */\n .placement-top {\n animation: calendar-slide-down var(--nuraly-datepicker-calendar-animation-duration, var(--nuraly-datepicker-local-calendar-animation-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n }\n\n .placement-bottom {\n animation: calendar-slide-up var(--nuraly-datepicker-calendar-animation-duration, var(--nuraly-datepicker-local-calendar-animation-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n }\n\n /* Animations */\n @keyframes calendar-slide-in {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes calendar-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes calendar-slide-down {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Legacy compatibility styles */\n .calendar-container-range {\n width: 600px;\n }\n\n /* Accessibility improvements */\n .calendar-container:focus-within {\n outline: var(--nuraly-datepicker-focus-border-width, var(--nuraly-datepicker-local-focus-border-width)) solid var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n outline-offset: 2px;\n }\n\n /* Focus management */\n [tabindex=\"-1\"]:focus {\n outline: none;\n }\n\n /* Days grid layout */\n .days-grid {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .weekdays-header {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 1px;\n margin-bottom: var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap));\n }\n\n .weekday-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--nuraly-datepicker-weekday-color, var(--nuraly-datepicker-local-weekday-color));\n text-align: center;\n }\n\n .days-body {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 1px;\n }\n\n /* Day cell base styles */\n .day-cell {\n width: var(--nuraly-datepicker-day-size, var(--nuraly-datepicker-local-day-size));\n height: var(--nuraly-datepicker-day-size, var(--nuraly-datepicker-local-day-size));\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n cursor: pointer;\n transition: all var(--nuraly-datepicker-transition-duration, var(--nuraly-datepicker-local-transition-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n font-size: var(--nuraly-datepicker-day-font-size, var(--nuraly-datepicker-local-day-font-size));\n font-weight: 400;\n color: var(--nuraly-datepicker-text-color, var(--nuraly-datepicker-local-text-color));\n margin: 1px;\n position: relative;\n }\n\n .day-cell:hover:not(.disabled):not(.selected) {\n background-color: var(--nuraly-datepicker-hover-color, var(--nuraly-datepicker-local-hover-color));\n scale: 1.05;\n }\n\n .day-cell.selected {\n background-color: var(--nuraly-datepicker-selected-color, var(--nuraly-datepicker-local-selected-color)) !important;\n color: var(--nuraly-datepicker-selected-text-color, var(--nuraly-datepicker-local-selected-text-color)) !important;\n font-weight: 600;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n }\n\n .day-cell.today {\n border: 2px solid var(--nuraly-datepicker-today-color, var(--nuraly-datepicker-local-today-color));\n font-weight: 600;\n }\n\n .day-cell.today.selected {\n border-color: var(--nuraly-datepicker-selected-text-color, var(--nuraly-datepicker-local-selected-text-color));\n }\n\n .day-cell.disabled {\n background-color: var(--nuraly-datepicker-disabled-color, var(--nuraly-datepicker-local-disabled-color));\n color: var(--nuraly-datepicker-disabled-text-color, var(--nuraly-datepicker-local-disabled-text-color));\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.4;\n }\n\n .day-cell.in-range {\n background-color: var(--nuraly-datepicker-range-color, var(--nuraly-datepicker-local-range-color));\n border-radius: 0;\n }\n\n .day-cell.in-range:first-of-type {\n border-radius: 6px 0 0 6px;\n }\n\n .day-cell.in-range:last-of-type {\n border-radius: 0 6px 6px 0;\n }\n\n .day-cell.in-range.selected {\n border-radius: 6px;\n }\n\n /* Error states */\n :host([state=\"error\"]) .datepicker-container {\n --nuraly-datepicker-local-input-border-color: var(--nuraly-datepicker-error-color, var(--nuraly-datepicker-local-error-color));\n }\n\n :host([state=\"warning\"]) .datepicker-container {\n --nuraly-datepicker-local-input-border-color: var(--nuraly-datepicker-warning-color, var(--nuraly-datepicker-local-warning-color));\n }\n\n :host([state=\"success\"]) .datepicker-container {\n --nuraly-datepicker-local-input-border-color: var(--nuraly-datepicker-success-color, var(--nuraly-datepicker-local-success-color));\n }\n\n /* Month/Year Dropdown Styles */\n .month-dropdown,\n .year-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n width: 120px;\n z-index: 1001;\n background: var(--nuraly-datepicker-background-color, var(--nuraly-datepicker-local-background-color));\n border: var(--nuraly-datepicker-border-width, var(--nuraly-datepicker-local-border-width)) solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n border-radius: 6px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n max-height: 200px;\n overflow-y: auto;\n animation: dropdown-slide-in 0.15s ease-out;\n }\n\n .year-dropdown {\n width: 80px;\n }\n\n .dropdown-content {\n padding: 4px 0;\n }\n\n .dropdown-item {\n padding: 8px 12px;\n cursor: pointer;\n color: var(--nuraly-datepicker-text-color, var(--nuraly-datepicker-local-text-color));\n font-size: var(--nuraly-datepicker-font-size, var(--nuraly-datepicker-local-font-size));\n transition: all 0.2s;\n border-radius: 0;\n }\n\n .dropdown-item:hover {\n background-color: var(--nuraly-datepicker-hover-background, var(--nuraly-datepicker-local-hover-background));\n }\n\n .dropdown-item.selected {\n background-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n color: #ffffff;\n font-weight: 600;\n }\n\n .dropdown-item.selected:hover {\n background-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n opacity: 0.9;\n }\n\n /* Dropdown animation */\n @keyframes dropdown-slide-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Year/Month button container positioning */\n .current-year-container,\n .month-selector {\n position: relative;\n z-index: 1000;\n }\n\n .toggle-month-view,\n .toggle-year-view {\n position: relative;\n z-index: 1001;\n }\n\n /* Select component styling - Override the default 300px width */\n .month-select {\n --nuraly-select-width: 110px !important;\n --nuraly-select-local-width: 110px !important;\n width: 110px !important;\n max-width: 110px !important;\n }\n\n .year-select {\n --nuraly-select-width: 80px !important;\n --nuraly-select-local-width: 80px !important; \n width: 80px !important;\n max-width: 80px !important;\n }\n`;\n"]}
|
|
1
|
+
{"version":3,"file":"datepicker.style.js","sourceRoot":"","sources":["../../../../src/components/datepicker/datepicker.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmbjB,CAAC","sourcesContent":["import { css } from 'lit';\nimport { styleVariables } from './datepicker.style.variables.js';\n\n/**\n * Datepicker component styles for the Hybrid UI Library\n * \n * This file contains all the styling for the nr-datepicker component, including:\n * - Base datepicker styles with CSS custom properties for theming\n * - Multiple datepicker states (default, disabled, focused)\n * - Size variations (small, medium, large)\n * - Calendar styling and positioning\n * - Date selection states and range highlighting\n * - Focus, disabled, and validation states\n * - Dark theme support\n * \n * The styling system uses CSS custom properties with fallbacks to allow\n * for both global and local customization of datepicker appearance.\n */\n\nexport const styles = css`\n ${styleVariables}\n\n :host {\n width: fit-content;\n display: block;\n font-family: var(--nuraly-datepicker-font-family, var(--nuraly-datepicker-local-font-family));\n }\n\n /* Host attribute selectors for configuration */\n :host([disabled]) {\n opacity: var(--nuraly-datepicker-disabled-opacity, var(--nuraly-datepicker-local-disabled-opacity));\n pointer-events: none;\n }\n\n :host([range]) {\n --nuraly-datepicker-local-calendar-width: 600px;\n }\n\n /* Container styles */\n .datepicker-container {\n position: relative;\n display: block;\n width: var(--nuraly-datepicker-width, var(--nuraly-datepicker-local-width));\n font-family: var(--nuraly-datepicker-font-family, var(--nuraly-datepicker-local-font-family));\n /* Allow calendar to overflow container without causing scroll */\n overflow: visible;\n }\n\n .datepicker-disabled {\n opacity: var(--nuraly-datepicker-disabled-opacity, var(--nuraly-datepicker-local-disabled-opacity));\n pointer-events: none;\n }\n\n /* Size variants */\n .datepicker-size-small {\n --nuraly-datepicker-local-day-size: var(--nuraly-datepicker-local-small-day-size);\n --nuraly-datepicker-local-font-size: var(--nuraly-datepicker-local-small-font-size);\n }\n\n .datepicker-size-medium {\n --nuraly-datepicker-local-day-size: var(--nuraly-datepicker-local-medium-day-size);\n --nuraly-datepicker-local-font-size: var(--nuraly-datepicker-local-medium-font-size);\n }\n\n .datepicker-size-large {\n --nuraly-datepicker-local-day-size: var(--nuraly-datepicker-local-large-day-size);\n --nuraly-datepicker-local-font-size: var(--nuraly-datepicker-local-large-font-size);\n }\n\n /* Calendar container */\n .calendar-container {\n position: fixed;\n z-index: var(--nuraly-datepicker-calendar-z-index, var(--nuraly-datepicker-local-calendar-z-index));\n user-select: none;\n padding: var(--nuraly-datepicker-calendar-padding, var(--nuraly-datepicker-local-calendar-padding));\n width: var(--nuraly-datepicker-calendar-width, var(--nuraly-datepicker-local-calendar-width));\n height: var(--nuraly-datepicker-calendar-height, var(--nuraly-datepicker-local-calendar-height));\n background-color: var(--nuraly-datepicker-background-color, var(--nuraly-datepicker-local-background-color));\n border: var(--nuraly-datepicker-border-width, var(--nuraly-datepicker-local-border-width)) solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n border-radius: var(--nuraly-datepicker-border-radius, var(--nuraly-datepicker-local-border-radius));\n box-shadow: var(--nuraly-datepicker-box-shadow, var(--nuraly-datepicker-local-box-shadow));\n animation: calendar-slide-in var(--nuraly-datepicker-calendar-animation-duration, var(--nuraly-datepicker-local-calendar-animation-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n }\n\n .calendar-range {\n width: calc(var(--nuraly-datepicker-calendar-width, var(--nuraly-datepicker-local-calendar-width)) * 2);\n }\n\n /* Calendar header */\n .calendar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--nuraly-datepicker-header-padding, var(--nuraly-datepicker-local-header-padding));\n height: var(--nuraly-datepicker-header-height, var(--nuraly-datepicker-local-header-height));\n border-bottom: var(--nuraly-datepicker-border-width, var(--nuraly-datepicker-local-border-width)) solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n background: var(--nuraly-datepicker-header-background, var(--nuraly-datepicker-local-header-background));\n }\n\n .year-month-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n justify-content: center;\n }\n\n .current-year-container {\n display: inline-flex;\n align-items: center;\n gap: calc(var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap)) / 2);\n }\n\n .year-icons-toggler {\n display: flex;\n flex-direction: column;\n gap: 2px;\n }\n\n /* Calendar content */\n .calendar-content {\n padding: var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap));\n padding-bottom: calc(var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap)) / 2);\n }\n\n /* Button customizations */\n nr-button {\n --nuraly-button-border-color: transparent;\n --nuraly-button-background-color: transparent;\n --nuraly-button-text-color: var(--nuraly-datepicker-text-color, var(--nuraly-datepicker-local-text-color));\n --nuraly-button-hover-background-color: var(--nuraly-datepicker-hover-color, var(--nuraly-datepicker-local-hover-color));\n --nuraly-button-transition-duration: var(--nuraly-datepicker-transition-duration, var(--nuraly-datepicker-local-transition-duration));\n }\n\n .toggle-year-view,\n .toggle-month-view {\n --nuraly-button-font-weight: var(--nuraly-datepicker-header-font-weight, var(--nuraly-datepicker-local-header-font-weight));\n --nuraly-button-font-size: var(--nuraly-datepicker-header-font-size, var(--nuraly-datepicker-local-header-font-size));\n --nuraly-button-padding: 4px 20px 4px 8px;\n --nuraly-button-border-radius: 6px;\n --nuraly-button-border: 1px solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n --nuraly-button-background-color: #ffffff;\n --nuraly-button-hover-border-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n --nuraly-button-hover-background-color: #ffffff;\n --nuraly-button-active-background-color: var(--nuraly-datepicker-hover-background, var(--nuraly-datepicker-local-hover-background));\n --nuraly-button-transition: all 0.2s;\n position: relative;\n min-width: 80px;\n }\n\n .toggle-month-view::after,\n .toggle-year-view::after {\n content: '';\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n height: 0;\n border-left: 3px solid transparent;\n border-right: 3px solid transparent;\n border-top: 3px solid rgba(0, 0, 0, 0.45);\n transition: all 0.2s;\n }\n\n .toggle-month-view:hover::after,\n .toggle-year-view:hover::after {\n border-top-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n }\n\n .next-year,\n .previous-year {\n --nuraly-button-width: 16px;\n --nuraly-button-height: 12px;\n --nuraly-button-padding: 0;\n --nuraly-button-min-width: auto;\n --nuraly-button-border-radius: 2px;\n --nuraly-button-text-color: rgba(0, 0, 0, 0.45);\n --nuraly-button-hover-text-color: rgba(0, 0, 0, 0.85);\n --nuraly-button-hover-background-color: rgba(0, 0, 0, 0.06);\n }\n\n .header-prev-button,\n .header-next-button {\n --nuraly-button-width: 24px;\n --nuraly-button-height: 24px;\n --nuraly-button-padding: 0;\n --nuraly-button-min-width: auto;\n --nuraly-button-border-radius: 2px;\n --nuraly-button-text-color: rgba(0, 0, 0, 0.45);\n --nuraly-button-hover-text-color: rgba(0, 0, 0, 0.85);\n --nuraly-button-hover-background-color: rgba(0, 0, 0, 0.06);\n --nuraly-button-transition: all 0.2s;\n }\n\n .header-prev-button:hover,\n .header-next-button:hover {\n --nuraly-button-background-color: rgba(0, 0, 0, 0.06);\n }\n\n /* Placement variants */\n .placement-top {\n animation: calendar-slide-down var(--nuraly-datepicker-calendar-animation-duration, var(--nuraly-datepicker-local-calendar-animation-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n }\n\n .placement-bottom {\n animation: calendar-slide-up var(--nuraly-datepicker-calendar-animation-duration, var(--nuraly-datepicker-local-calendar-animation-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n }\n\n /* Animations */\n @keyframes calendar-slide-in {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes calendar-slide-up {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes calendar-slide-down {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Legacy compatibility styles */\n .calendar-container-range {\n width: 600px;\n }\n\n /* Accessibility improvements */\n .calendar-container:focus-within {\n outline: var(--nuraly-datepicker-focus-border-width, var(--nuraly-datepicker-local-focus-border-width)) solid var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n outline-offset: 2px;\n }\n\n /* Focus management */\n [tabindex=\"-1\"]:focus {\n outline: none;\n }\n\n /* Days grid layout */\n .days-grid {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .weekdays-header {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 1px;\n margin-bottom: var(--nuraly-datepicker-gap, var(--nuraly-datepicker-local-gap));\n }\n\n .weekday-header {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--nuraly-datepicker-weekday-color, var(--nuraly-datepicker-local-weekday-color));\n text-align: center;\n }\n\n .days-body {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 1px;\n }\n\n /* Day cell base styles */\n .day-cell {\n width: var(--nuraly-datepicker-day-size, var(--nuraly-datepicker-local-day-size));\n height: var(--nuraly-datepicker-day-size, var(--nuraly-datepicker-local-day-size));\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n cursor: pointer;\n transition: all var(--nuraly-datepicker-transition-duration, var(--nuraly-datepicker-local-transition-duration)) var(--nuraly-datepicker-transition-timing, var(--nuraly-datepicker-local-transition-timing));\n font-size: var(--nuraly-datepicker-day-font-size, var(--nuraly-datepicker-local-day-font-size));\n font-weight: 400;\n color: var(--nuraly-datepicker-text-color, var(--nuraly-datepicker-local-text-color));\n margin: 1px;\n position: relative;\n }\n\n .day-cell:hover:not(.disabled):not(.selected) {\n background-color: var(--nuraly-datepicker-hover-color, var(--nuraly-datepicker-local-hover-color));\n scale: 1.05;\n }\n\n .day-cell.selected {\n background-color: var(--nuraly-datepicker-selected-color, var(--nuraly-datepicker-local-selected-color)) !important;\n color: var(--nuraly-datepicker-selected-text-color, var(--nuraly-datepicker-local-selected-text-color)) !important;\n font-weight: 600;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n }\n\n .day-cell.today {\n border: 2px solid var(--nuraly-datepicker-today-color, var(--nuraly-datepicker-local-today-color));\n font-weight: 600;\n }\n\n .day-cell.today.selected {\n border-color: var(--nuraly-datepicker-selected-text-color, var(--nuraly-datepicker-local-selected-text-color));\n }\n\n .day-cell.disabled {\n background-color: var(--nuraly-datepicker-disabled-color, var(--nuraly-datepicker-local-disabled-color));\n color: var(--nuraly-datepicker-disabled-text-color, var(--nuraly-datepicker-local-disabled-text-color));\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.4;\n }\n\n .day-cell.in-range {\n background-color: var(--nuraly-datepicker-range-color, var(--nuraly-datepicker-local-range-color));\n border-radius: 0;\n }\n\n .day-cell.in-range:first-of-type {\n border-radius: 6px 0 0 6px;\n }\n\n .day-cell.in-range:last-of-type {\n border-radius: 0 6px 6px 0;\n }\n\n .day-cell.in-range.selected {\n border-radius: 6px;\n }\n\n /* Error states */\n :host([state=\"error\"]) .datepicker-container {\n --nuraly-datepicker-local-input-border-color: var(--nuraly-datepicker-error-color, var(--nuraly-datepicker-local-error-color));\n }\n\n :host([state=\"warning\"]) .datepicker-container {\n --nuraly-datepicker-local-input-border-color: var(--nuraly-datepicker-warning-color, var(--nuraly-datepicker-local-warning-color));\n }\n\n :host([state=\"success\"]) .datepicker-container {\n --nuraly-datepicker-local-input-border-color: var(--nuraly-datepicker-success-color, var(--nuraly-datepicker-local-success-color));\n }\n\n /* Month/Year Dropdown Styles */\n .month-dropdown,\n .year-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n width: 120px;\n z-index: 1001;\n background: var(--nuraly-datepicker-background-color, var(--nuraly-datepicker-local-background-color));\n border: var(--nuraly-datepicker-border-width, var(--nuraly-datepicker-local-border-width)) solid var(--nuraly-datepicker-border-color, var(--nuraly-datepicker-local-border-color));\n border-radius: 6px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n max-height: 200px;\n overflow-y: auto;\n animation: dropdown-slide-in 0.15s ease-out;\n }\n\n .year-dropdown {\n width: 80px;\n }\n\n .dropdown-content {\n padding: 4px 0;\n }\n\n .dropdown-item {\n padding: 8px 12px;\n cursor: pointer;\n color: var(--nuraly-datepicker-text-color, var(--nuraly-datepicker-local-text-color));\n font-size: var(--nuraly-datepicker-font-size, var(--nuraly-datepicker-local-font-size));\n transition: all 0.2s;\n border-radius: 0;\n }\n\n .dropdown-item:hover {\n background-color: var(--nuraly-datepicker-hover-background, var(--nuraly-datepicker-local-hover-background));\n }\n\n .dropdown-item.selected {\n background-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n color: #ffffff;\n font-weight: 600;\n }\n\n .dropdown-item.selected:hover {\n background-color: var(--nuraly-datepicker-primary-color, var(--nuraly-datepicker-local-primary-color));\n opacity: 0.9;\n }\n\n /* Dropdown animation */\n @keyframes dropdown-slide-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Year/Month button container positioning */\n .current-year-container,\n .month-selector {\n position: relative;\n z-index: 1000;\n }\n\n .toggle-month-view,\n .toggle-year-view {\n position: relative;\n z-index: 1001;\n }\n\n /* Select component styling - Override the default 300px width */\n .month-select {\n --nuraly-select-width: 110px !important;\n --nuraly-select-local-width: 110px !important;\n width: 110px !important;\n max-width: 110px !important;\n }\n\n .year-select {\n --nuraly-select-width: 80px !important;\n --nuraly-select-local-width: 80px !important; \n width: 80px !important;\n max-width: 80px !important;\n }\n`;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.style.variables.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"datepicker.style.variables.js","sourceRoot":"","sources":["../../../../src/components/datepicker/datepicker.style.variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHhC,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styleVariables = css`\n :host {\n /* ========================================\n * DATEPICKER THEME-AWARE VARIABLES\n * Uses CSS custom properties from theme files\n * ======================================== */\n\n /* Base datepicker styling - uses theme variables with fallbacks */\n --nuraly-datepicker-local-background-color: var(--nuraly-color-datepicker-background, #ffffff);\n --nuraly-datepicker-local-text-color: var(--nuraly-color-datepicker-text, #000000);\n --nuraly-datepicker-local-font-family: var(--nuraly-font-family-datepicker, Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif);\n --nuraly-datepicker-local-font-size: var(--nuraly-font-size-datepicker, 14px);\n \n /* Datepicker borders - theme-aware */\n --nuraly-datepicker-local-border-color: var(--nuraly-color-datepicker-border, #d9d9d9);\n --nuraly-datepicker-local-border-width: var(--nuraly-border-width-datepicker, 1px);\n --nuraly-datepicker-local-border-radius: var(--nuraly-border-radius-datepicker, 8px);\n \n /* Primary and selection colors - theme-aware */\n --nuraly-datepicker-local-primary-color: var(--nuraly-color-datepicker-primary, #1677ff);\n --nuraly-datepicker-local-selected-color: var(--nuraly-color-datepicker-selected, #1677ff);\n --nuraly-datepicker-local-selected-text-color: var(--nuraly-color-datepicker-selected-text, #ffffff);\n --nuraly-datepicker-local-hover-color: var(--nuraly-color-datepicker-hover, #f5f5f5);\n --nuraly-datepicker-local-today-color: var(--nuraly-color-datepicker-today, #1677ff);\n \n /* Disabled states - theme-aware */\n --nuraly-datepicker-local-disabled-color: var(--nuraly-color-datepicker-disabled, #f5f5f5);\n --nuraly-datepicker-local-disabled-text-color: var(--nuraly-color-datepicker-disabled-text, #bfbfbf);\n --nuraly-datepicker-local-disabled-opacity: var(--nuraly-opacity-datepicker-disabled, 0.5);\n \n /* Input field colors - theme-aware */\n --nuraly-datepicker-local-input-background: var(--nuraly-color-datepicker-input-background, #ffffff);\n --nuraly-datepicker-local-input-border-color: var(--nuraly-color-datepicker-input-border, #d9d9d9);\n --nuraly-datepicker-local-input-focus-border-color: var(--nuraly-color-datepicker-input-focus-border, #1677ff);\n --nuraly-datepicker-local-input-text-color: var(--nuraly-color-datepicker-input-text, #000000);\n --nuraly-datepicker-local-input-placeholder-color: var(--nuraly-color-datepicker-input-placeholder, #bfbfbf);\n \n /* Special date colors - theme-aware */\n --nuraly-datepicker-local-weekend-color: var(--nuraly-color-datepicker-weekend, #ff4d4f);\n --nuraly-datepicker-local-weekday-color: var(--nuraly-color-datepicker-weekday, #8c8c8c);\n --nuraly-datepicker-local-range-color: var(--nuraly-color-datepicker-range, rgba(22, 119, 255, 0.1));\n --nuraly-datepicker-local-error-color: var(--nuraly-color-datepicker-error, #da1e28);\n --nuraly-datepicker-local-warning-color: var(--nuraly-color-datepicker-warning, #f0c300);\n --nuraly-datepicker-local-success-color: var(--nuraly-color-datepicker-success, #24a148);\n \n /* Header specific colors - theme-aware */\n --nuraly-datepicker-local-header-background: var(--nuraly-color-datepicker-header-background, #ffffff);\n --nuraly-datepicker-local-hover-background: var(--nuraly-color-datepicker-hover-background, rgba(0, 0, 0, 0.04));\n --nuraly-datepicker-local-active-background: var(--nuraly-color-datepicker-active-background, rgba(0, 0, 0, 0.06));\n \n /* Layout and sizing - theme-aware */\n --nuraly-datepicker-local-width: var(--nuraly-size-datepicker-width, 280px);\n --nuraly-datepicker-local-height: var(--nuraly-size-datepicker-height, auto);\n --nuraly-datepicker-local-calendar-width: var(--nuraly-size-datepicker-calendar-width, 320px);\n --nuraly-datepicker-local-calendar-height: var(--nuraly-size-datepicker-calendar-height, auto);\n --nuraly-datepicker-local-day-size: var(--nuraly-size-datepicker-day, 36px);\n --nuraly-datepicker-local-header-height: var(--nuraly-size-datepicker-header-height, 56px);\n \n /* Typography - theme-aware */\n --nuraly-datepicker-local-font-weight: var(--nuraly-font-weight-datepicker, 400);\n --nuraly-datepicker-local-header-font-size: var(--nuraly-font-size-datepicker-header, 16px);\n --nuraly-datepicker-local-header-font-weight: var(--nuraly-font-weight-datepicker-header, 600);\n --nuraly-datepicker-local-day-font-size: var(--nuraly-font-size-datepicker-day, 14px);\n --nuraly-datepicker-local-input-font-size: var(--nuraly-font-size-datepicker-input, 14px);\n --nuraly-datepicker-local-label-font-size: var(--nuraly-font-size-datepicker-label, 14px);\n --nuraly-datepicker-local-helper-font-size: var(--nuraly-font-size-datepicker-helper, 12px);\n --nuraly-datepicker-local-message-font-size: var(--nuraly-font-size-datepicker-message, 12px);\n \n /* Spacing - theme-aware */\n --nuraly-datepicker-local-gap: var(--nuraly-spacing-datepicker-gap, 6px);\n --nuraly-datepicker-local-calendar-padding: var(--nuraly-spacing-datepicker-calendar-padding, 12px);\n --nuraly-datepicker-local-day-padding: var(--nuraly-spacing-datepicker-day-padding, 6px);\n --nuraly-datepicker-local-input-padding: var(--nuraly-spacing-datepicker-input-padding, 8px 12px);\n --nuraly-datepicker-local-padding: var(--nuraly-spacing-datepicker-padding, 16px);\n --nuraly-datepicker-local-margin: var(--nuraly-spacing-datepicker-margin, 0);\n \n /* Borders - theme-aware */\n --nuraly-datepicker-local-input-border-width: var(--nuraly-border-width-datepicker-input, 1px);\n --nuraly-datepicker-local-focus-border-width: var(--nuraly-border-width-datepicker-focus, 2px);\n \n /* Shadows - theme-aware */\n --nuraly-datepicker-local-shadow-color: var(--nuraly-color-datepicker-shadow, rgba(0, 0, 0, 0.1));\n --nuraly-datepicker-local-box-shadow: var(--nuraly-shadow-datepicker-box, 0 6px 16px 0 var(--nuraly-datepicker-local-shadow-color));\n --nuraly-datepicker-local-input-focus-shadow: var(--nuraly-shadow-datepicker-input-focus, 0 0 0 2px rgba(22, 119, 255, 0.2));\n \n /* States - theme-aware */\n --nuraly-datepicker-local-hover-opacity: var(--nuraly-opacity-datepicker-hover, 0.8);\n \n /* Animation and transitions - theme-aware */\n --nuraly-datepicker-local-transition-duration: var(--nuraly-transition-duration-datepicker, 0.2s);\n --nuraly-datepicker-local-transition-timing: var(--nuraly-transition-timing-datepicker, ease-in-out);\n --nuraly-datepicker-local-calendar-animation-duration: var(--nuraly-transition-duration-datepicker-calendar, 0.15s);\n \n /* Z-index - theme-aware */\n --nuraly-datepicker-local-calendar-z-index: var(--nuraly-z-index-datepicker-calendar, 1000);\n \n /* Icon sizes - theme-aware */\n --nuraly-datepicker-local-icon-size: var(--nuraly-size-datepicker-icon, 16px);\n --nuraly-datepicker-local-arrow-icon-size: var(--nuraly-size-datepicker-arrow-icon, 12px);\n \n /* Size variants - theme-aware */\n --nuraly-datepicker-local-small-font-size: var(--nuraly-font-size-datepicker-small, 12px);\n --nuraly-datepicker-local-small-padding: var(--nuraly-spacing-datepicker-small-padding, 6px 8px);\n --nuraly-datepicker-local-small-height: var(--nuraly-size-datepicker-small-height, 32px);\n --nuraly-datepicker-local-small-day-size: var(--nuraly-size-datepicker-small-day, 28px);\n \n --nuraly-datepicker-local-medium-font-size: var(--nuraly-font-size-datepicker-medium, 14px);\n --nuraly-datepicker-local-medium-padding: var(--nuraly-spacing-datepicker-medium-padding, 8px 12px);\n --nuraly-datepicker-local-medium-height: var(--nuraly-size-datepicker-medium-height, 36px);\n --nuraly-datepicker-local-medium-day-size: var(--nuraly-size-datepicker-medium-day, 36px);\n \n --nuraly-datepicker-local-large-font-size: var(--nuraly-font-size-datepicker-large, 16px);\n --nuraly-datepicker-local-large-padding: var(--nuraly-spacing-datepicker-large-padding, 12px 16px);\n --nuraly-datepicker-local-large-height: var(--nuraly-size-datepicker-large-height, 44px);\n --nuraly-datepicker-local-large-day-size: var(--nuraly-size-datepicker-large-day, 44px);\n }\n`;\n"]}
|
package/datepicker.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"datepicker.types.js","sourceRoot":"","sources":["../../../../src/components/datepicker/datepicker.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkFH;;GAEG;AACH,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,mCAAiB,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;IACf,uCAAqB,CAAA;AACvB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,mCAAiB,CAAA;IACjB,iCAAe,CAAA;AACjB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;AACnB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,sCAAkB,CAAA;IAClB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,sCAAkB,CAAA;IAClB,yCAAqB,CAAA;IACrB,0CAAsB,CAAA;AACxB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,kCAAW,CAAA;IACX,oCAAa,CAAA;AACf,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,IAKX;AALD,WAAY,IAAI;IACd,mBAAW,CAAA;IACX,uBAAe,CAAA;IACf,qBAAa,CAAA;IACb,yBAAiB,CAAA;AACnB,CAAC,EALW,IAAI,KAAJ,IAAI,QAKf","sourcesContent":["/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * Date picker option type for individual date selections\n */\nexport type DatePickerOption = {\n value: string;\n label: string;\n date: Date;\n disabled?: boolean;\n state?: DatePickerState;\n message?: string;\n htmlContent?: string;\n className?: string;\n style?: string;\n title?: string;\n id?: string;\n};\n\n/**\n * State types for date picker validation and feedback\n */\nexport type DatePickerState = 'error' | 'warning' | 'success';\n\n/**\n * Navigation date structure for date picker\n */\nexport interface INavigationDate {\n start: {\n year: number;\n month: number;\n day: number;\n };\n end?: {\n year: number;\n month: number;\n day: number;\n };\n}\n\n/**\n * Day presentation structure for calendar rendering\n */\nexport interface IDayPresentation {\n date: number;\n day: number;\n dayString: string;\n month: number;\n valid: number;\n year: number;\n timestamp: number;\n isToday?: boolean;\n isSelected?: boolean;\n isInRange?: boolean;\n isDisabled?: boolean;\n state?: DatePickerState;\n}\n\n/**\n * Day information for month calculations\n */\nexport interface IDayInfo {\n dayIndex: number;\n numberOfDays: number;\n firstDay: number;\n year: number;\n month: number;\n days: string[];\n}\n\n/**\n * Raw date object for internal state management\n */\nexport interface DateRawObject {\n currentYear: number;\n currentMonth: number;\n currentDay: number;\n endYear?: number;\n endMonth?: number;\n endDay?: number;\n}\n\n/**\n * Date picker modes enumeration\n */\nexport enum DatePickerMode {\n Day = 'day',\n Month = 'month', \n Year = 'year',\n Decade = 'decade',\n}\n\n/**\n * Date picker types enumeration\n */\nexport enum DatePickerType {\n Single = 'single',\n Range = 'range',\n Multiple = 'multiple',\n}\n\n/**\n * Date picker size enumeration\n */\nexport enum DatePickerSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\n/**\n * Date picker variant enumeration\n */\nexport enum DatePickerVariant {\n Default = 'default',\n Outlined = 'outlined',\n Filled = 'filled',\n}\n\n/**\n * Date format patterns\n */\nexport enum DatePickerFormat {\n ISO = 'YYYY-MM-DD',\n US = 'MM/DD/YYYY',\n EU = 'DD/MM/YYYY',\n Short = 'DD/MM/YY',\n Long = 'DD MMMM YYYY',\n Medium = 'DD MMM YYYY',\n}\n\n/**\n * Date picker placement options\n */\nexport enum DatePickerPlacement {\n Bottom = 'bottom',\n Top = 'top',\n Auto = 'auto',\n}\n\n/**\n * Legacy compatibility - keeping original Mode enum\n * @deprecated Use DatePickerMode instead\n */\nexport enum Mode {\n Day = 'day',\n Month = 'month',\n Year = 'year', \n Decade = 'decade',\n}\n"]}
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/datepicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './datepicker.component.js';\nexport * from './datepicker.types.js';\nexport * from './controllers/index.js';\n"]}
|
package/package.json
CHANGED
package/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../../src/components/datepicker/react.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,OAAO,EAAE,eAAe;IACxB,YAAY,EAAE,mBAAmB;IACjC,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE;QACN,YAAY,EAAE,gBAAgB;QAC9B,aAAa,EAAE,iBAAiB;QAChC,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,mBAAmB;QACpC,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,eAAe;KAC9B;CACF,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport React from 'react';\nimport { createComponent } from '@lit-labs/react';\nimport { HyDatePickerElement } from './datepicker.component.js';\n\nexport const HyDatepicker = createComponent({\n tagName: 'nr-datepicker',\n elementClass: HyDatePickerElement,\n react: React,\n events: {\n onDateChange: 'nr-date-change',\n onRangeChange: 'nr-range-change',\n onCalendarOpen: 'nr-calendar-open',\n onCalendarClose: 'nr-calendar-close',\n onFocus: 'nr-focus',\n onBlur: 'nr-blur',\n onValidation: 'nr-validation',\n },\n});\n"]}
|