@nuralyui/datepicker 0.0.5 → 0.0.7
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 +228 -231
- package/datepicker.component.d.ts +8 -8
- package/datepicker.component.js +12 -12
- package/datepicker.component.js.map +1 -1
- package/datepicker.style.d.ts +13 -3
- package/datepicker.style.js +112 -113
- package/datepicker.style.js.map +1 -1
- package/datepicker.style.variables.d.ts +1 -10
- package/datepicker.style.variables.js +114 -110
- package/datepicker.style.variables.js.map +1 -1
- package/{datepicker.type.d.ts → datepicker.types.d.ts} +1 -1
- package/{datepicker.type.js → datepicker.types.js} +1 -1
- package/datepicker.types.js.map +1 -0
- package/index.d.ts +1 -2
- package/index.js +1 -2
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/react.js +1 -1
- package/react.js.map +1 -1
- package/datepicker.type.js.map +0 -1
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { LitElement, PropertyValues, TemplateResult } from 'lit';
|
|
7
|
-
import { DatePickerMode, DatePickerType, DatePickerSize, DatePickerVariant, DatePickerPlacement, INavigationDate, IDayPresentation, DatePickerState } from './datepicker.
|
|
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
|
-
import './
|
|
9
|
+
import './utils/locale.helper.js';
|
|
10
10
|
import { INPUT_STATE } from '../input/input.types.js';
|
|
11
|
-
declare const HyDatePickerElement_base: (new (...args: any[]) => import("
|
|
11
|
+
declare const HyDatePickerElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & typeof LitElement;
|
|
12
12
|
/**
|
|
13
13
|
* HyDatePicker - A comprehensive date picker component
|
|
14
14
|
*
|
|
15
|
-
* @element
|
|
15
|
+
* @element nr-datepicker
|
|
16
16
|
*
|
|
17
17
|
* @fires nr-date-change - Fired when a date is selected
|
|
18
18
|
* @fires nr-range-change - Fired when a date range is selected
|
|
@@ -36,20 +36,20 @@ declare const HyDatePickerElement_base: (new (...args: any[]) => import("../../s
|
|
|
36
36
|
*
|
|
37
37
|
* @example
|
|
38
38
|
* ```html
|
|
39
|
-
* <
|
|
39
|
+
* <nr-datepicker
|
|
40
40
|
* label="Select Date"
|
|
41
41
|
* field-format="DD/MM/YYYY"
|
|
42
42
|
* @nr-date-change="${this.handleDateChange}">
|
|
43
|
-
* </
|
|
43
|
+
* </nr-datepicker>
|
|
44
44
|
* ```
|
|
45
45
|
*
|
|
46
46
|
* @example Range picker
|
|
47
47
|
* ```html
|
|
48
|
-
* <
|
|
48
|
+
* <nr-datepicker
|
|
49
49
|
* range
|
|
50
50
|
* label="Select Date Range"
|
|
51
51
|
* @nr-range-change="${this.handleRangeChange}">
|
|
52
|
-
* </
|
|
52
|
+
* </nr-datepicker>
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
55
|
export declare class HyDatePickerElement extends HyDatePickerElement_base implements DatePickerHost {
|
package/datepicker.component.js
CHANGED
|
@@ -13,22 +13,22 @@ import { LitElement, html, nothing } from 'lit';
|
|
|
13
13
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
14
14
|
import { choose } from 'lit/directives/choose.js';
|
|
15
15
|
import { classMap } from 'lit/directives/class-map.js';
|
|
16
|
-
import { NuralyUIBaseMixin } from '
|
|
16
|
+
import { NuralyUIBaseMixin } from '@nuralyui/common/mixins';
|
|
17
17
|
import { styles } from './datepicker.style.js';
|
|
18
|
-
import { DatePickerMode, DatePickerType, DatePickerSize, DatePickerVariant, DatePickerPlacement, } from './datepicker.
|
|
18
|
+
import { DatePickerMode, DatePickerType, DatePickerSize, DatePickerVariant, DatePickerPlacement, } from './datepicker.types.js';
|
|
19
19
|
import { DEFAULT_DATE_FORMAT, DEFAULT_LOCALE, INPUT_FIELD_ID, CALENDAR_CONTAINER_CLASS, DATE_PICKER_EVENTS, } from './datepicker.constant.js';
|
|
20
20
|
import { DatePickerCalendarController, DatePickerSelectionController, DatePickerKeyboardController, DatePickerPositioningController, } from './controllers/index.js';
|
|
21
|
-
import { SharedDropdownController } from '
|
|
21
|
+
import { SharedDropdownController } from '@nuralyui/common/controllers';
|
|
22
22
|
import dayjs from 'dayjs';
|
|
23
23
|
import { renderMonthsTemplate } from './templates/months.template.js';
|
|
24
24
|
import { renderYearsTemplate } from './templates/years.template.js';
|
|
25
25
|
import { renderDays } from './templates/days.template.js';
|
|
26
|
-
import { capitalizeFirstLetter } from './
|
|
27
|
-
import './
|
|
26
|
+
import { capitalizeFirstLetter } from './utils/string.helper.js';
|
|
27
|
+
import './utils/locale.helper.js';
|
|
28
28
|
/**
|
|
29
29
|
* HyDatePicker - A comprehensive date picker component
|
|
30
30
|
*
|
|
31
|
-
* @element
|
|
31
|
+
* @element nr-datepicker
|
|
32
32
|
*
|
|
33
33
|
* @fires nr-date-change - Fired when a date is selected
|
|
34
34
|
* @fires nr-range-change - Fired when a date range is selected
|
|
@@ -52,26 +52,26 @@ import './core/locale.helper.js';
|
|
|
52
52
|
*
|
|
53
53
|
* @example
|
|
54
54
|
* ```html
|
|
55
|
-
* <
|
|
55
|
+
* <nr-datepicker
|
|
56
56
|
* label="Select Date"
|
|
57
57
|
* field-format="DD/MM/YYYY"
|
|
58
58
|
* @nr-date-change="${this.handleDateChange}">
|
|
59
|
-
* </
|
|
59
|
+
* </nr-datepicker>
|
|
60
60
|
* ```
|
|
61
61
|
*
|
|
62
62
|
* @example Range picker
|
|
63
63
|
* ```html
|
|
64
|
-
* <
|
|
64
|
+
* <nr-datepicker
|
|
65
65
|
* range
|
|
66
66
|
* label="Select Date Range"
|
|
67
67
|
* @nr-range-change="${this.handleRangeChange}">
|
|
68
|
-
* </
|
|
68
|
+
* </nr-datepicker>
|
|
69
69
|
* ```
|
|
70
70
|
*/
|
|
71
71
|
let HyDatePickerElement = class HyDatePickerElement extends NuralyUIBaseMixin(LitElement) {
|
|
72
72
|
constructor() {
|
|
73
73
|
super(...arguments);
|
|
74
|
-
this.requiredComponents = ['nr-input', 'nr-button', '
|
|
74
|
+
this.requiredComponents = ['nr-input', 'nr-button', 'nr-icon', 'hy-select'];
|
|
75
75
|
// Controllers - following the delegation pattern
|
|
76
76
|
this.calendarController = new DatePickerCalendarController(this);
|
|
77
77
|
this.selectionController = new DatePickerSelectionController(this);
|
|
@@ -662,7 +662,7 @@ __decorate([
|
|
|
662
662
|
query(`.${CALENDAR_CONTAINER_CLASS}`)
|
|
663
663
|
], HyDatePickerElement.prototype, "calendarContainer", void 0);
|
|
664
664
|
HyDatePickerElement = __decorate([
|
|
665
|
-
customElement('
|
|
665
|
+
customElement('nr-datepicker')
|
|
666
666
|
], HyDatePickerElement);
|
|
667
667
|
export { HyDatePickerElement };
|
|
668
668
|
//# sourceMappingURL=datepicker.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.component.js","sourceRoot":"","sources":["../../../src/components/datepicker/datepicker.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAkC,MAAM,KAAK,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EACH,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GAItB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,kBAAkB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,GAClC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAE3F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,yBAAyB,CAAC;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,IAAa,mBAAmB,GAAhC,MAAa,mBAAoB,SAAQ,iBAAiB,CAAC,UAAU,CAAC;IAAtE;;QAEW,uBAAkB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAEhF,iDAAiD;QACzC,uBAAkB,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC5D,wBAAmB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAC9D,uBAAkB,GAAG,IAAI,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/G,0BAAqB,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAClE,uBAAkB,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAEhE,qDAAqD;QACzB,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,EAAE,CAAC;QACc,cAAS,GAAG,EAAE,CAAC;QACZ,iBAAY,GAAG,EAAE,CAAC;QAC7C,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QAClB,WAAM,GAAG,cAAc,CAAC;QACG,gBAAW,GAAG,mBAAmB,CAAC;QAEzF,kCAAkC;QACL,UAAK,GAAG,KAAK,CAAC;QAK3C,gBAAgB;QACY,SAAI,GAAmB,cAAc,CAAC,MAAM,CAAC;QAC7C,SAAI,GAAmB,cAAc,CAAC,MAAM,CAAC;QAC7C,YAAO,GAAsB,iBAAiB,CAAC,OAAO,CAAC;QACvD,cAAS,GAAwB,mBAAmB,CAAC,IAAI,CAAC;QAC1D,UAAK,GAAG,EAAE,CAAC;QACX,WAAM,GAAG,EAAE,CAAC;QACZ,UAAK,uCAAsD;QACvB,uBAAkB,GAAG,KAAK,CAAC;QAE3F,iBAAiB;QACyD,mBAAc,GAAG,KAAK,CAAC;QACrE,SAAI,GAAmB,cAAc,CAAC,GAAG,CAAC;QAItE,mBAAmB;QACF,gBAAW,GAAmB,cAAc,CAAC,GAAG,CAAC;QACjD,gBAAW,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,WAAM,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC;QACvC,SAAI,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvC,kBAAa,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;QACrD,oBAAe,GAAG,EAAE,CAAC;QACrB,gBAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,iBAAY,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACzC,eAAU,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAKnD,wCAAwC;QAC/B,oBAAe,GAAoB;YAC1C,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,GAAG,EAAE,IAAI,CAAC,UAAU;aACrB;SACF,CAAC;QAMF,sBAAsB;QACL,eAAU,GAAG,UAAU,CAAC;QAkPzC,gDAAgD;QAChD,sBAAiB,GAAG,CAAC,KAAkB,EAAE,EAAE;YACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,qBAAgB,GAAG,CAAC,KAAkB,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;QACpE,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;QAChE,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QAClE,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QAE9D,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,eAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,eAAiC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;YACzF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;IA8NJ,CAAC;IA/eU,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,uCAAuC;IACzC,CAAC;IAEQ,YAAY,CAAC,kBAAkC;QACtD,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,uBAAuB;QAC7B,iEAAiE;QACjE,oDAAoD;IACtD,CAAC;IAEQ,UAAU,CAAC,iBAAiC;QACnD,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,qDAAqD;QACrD,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;SAC/B;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,iBAAiC;QAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YAClE,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;YAChD,oFAAoF;SACrF;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EAAE;YACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,iBAAiC;QAChE,OAAO,CACL,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5E,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChF,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;YACrB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,eAAe,mCACf,IAAI,CAAC,eAAe,KACvB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GACrD,CAAC;SACH;IACH,CAAC;IAED,0CAA0C;IAC1C,cAAc;QACZ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,IAAU;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,UAAkB;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,0DAA0D;IAE1D;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAU;QACnB,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,8CAA8C;QAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB;gBAC3C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS;aAC5B,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC5C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5E,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;aAChC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE;oBACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;oBACzC,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAoB;QAChC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;IACV,gBAAgB;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;SACvE;aAAM;YACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;SACtE;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC;IAED,iBAAiB;IACjB,YAAY,CAAC,KAAkB;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C,yCAAyC;IAC3C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE;YACxC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAqCD,0BAA0B;IAClB,mBAAmB,CAAC,KAAY;QACtC,MAAM,WAAW,GAAG,KAAoB,CAAC;QACzC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,oCAAoC;IACxE,CAAC;IAEO,kBAAkB,CAAC,KAAY;QACrC,MAAM,WAAW,GAAG,KAAoB,CAAC;QACzC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,mDAAmD;IAC3C,oBAAoB,CAAC,UAAkB;QAC7C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,yDAAyD;IACzF,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,uDAAuD;IACpC,MAAM;QACvB,OAAO,IAAI,CAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAChD,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvD,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAA;;iBAEE,QAAQ,CAAC;YAChB,sBAAsB,EAAE,IAAI;YAC5B,qBAAqB,EAAE,IAAI,CAAC,QAAQ;YACpC,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;YACtC,CAAC,sBAAsB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;SAC7C,CAAC;sBACY,IAAI,CAAC,YAAY;;;gBAGvB,cAAc;mBACX,IAAI,CAAC,UAAU;oBACd,IAAI,CAAC,eAAe;mBACrB,IAAI,CAAC,IAAI;oBACR,IAAI,CAAC,KAAK;uBACP,IAAI,CAAC,QAAQ;uBACb,IAAI,CAAC,QAAQ;oBAChB,IAAI,CAAC,YAAY;oBACjB,IAAI,CAAC,OAAO;oBACZ,IAAI,CAAC,cAAc;sBACjB,IAAI,CAAC,aAAa;;2BAEb,IAAI,CAAC,cAAc;;wBAEtB,IAAI,CAAC,KAAK,IAAI,aAAa;;YAEvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO;YACpE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,OAAO;;UAE9E,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO;;KAE1D,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,iCAAiC;QACjC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,gCAAgC;IAC9D,CAAC;IAEO,cAAc;QACpB,qCAAqC;QACrC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,gCAAgC;IAC9D,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAA;;iBAEE,QAAQ,CAAC;YAChB,CAAC,wBAAwB,CAAC,EAAE,IAAI;YAChC,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,GAAG;YACvE,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI;SACtC,CAAC;;;;;;;;;qBASW,CAAC,YAAY,CAAC;sBACb,IAAI,CAAC,SAAS;;;YAGxB,IAAI,CAAC,oBAAoB,EAAE;;;;qBAIlB,CAAC,aAAa,CAAC;sBACd,IAAI,CAAC,SAAS;;;;;YAKxB,IAAI,CAAC,kBAAkB,EAAE;;;KAGhC,CAAC;IACJ,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC7B,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAY,WAAW;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;YAClE,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACtB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;aACvB,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,IAAI;YACxC,CAAC,CAAC,IAAI,CAAA;;;4BAGY,IAAI,CAAC,YAAY;0BACnB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;iCACpC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;8BAChD,IAAI,CAAC,iBAAiB;;;;6BAIvB,KAAK;;;;WAIvB;YACD,CAAC,CAAC,OAAO;;;;wBAIK,IAAI,CAAC,WAAW;sBAClB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;6BACnC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;0BAC/C,IAAI,CAAC,gBAAgB;;;;yBAItB,KAAK;;;;;;uBAMP,CAAC,UAAU,CAAC;wBACX,IAAI,CAAC,QAAQ;;;;;uBAKd,CAAC,YAAY,CAAC;wBACb,IAAI,CAAC,QAAQ;;;;;;KAMhC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAA,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACjD,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAChD,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,UAAU;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,GAAG,CAAC;QACtE,OAAO,UAAU,CACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAChD;YACE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY;YAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;SACvC,EACD,OAAO,EACP,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrF,CAAC;IAEO,WAAW;QACjB,OAAO,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;CAGF,CAAA;AAvjBiB,0BAAM,GAAG,MAAO,CAAA;AAWJ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAAW;AACV;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAY;AACc;IAApD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;sDAAgB;AACZ;IAAvD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;yDAAmB;AAC7C;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDAAkB;AACjB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDAAkB;AAClB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAyB;AACG;IAAtD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;wDAAmC;AAG5D;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDAAe;AACQ;IAAlD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oDAAkB;AACjB;IAAlD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oDAAkB;AACZ;IAAvD,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;0DAA0B;AAGrD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAA8C;AAC7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAA8C;AAC7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDAAwD;AACvD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAA2D;AAC1D;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAY;AACX;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAa;AACZ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAA4D;AACvB;IAA/D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;+DAA4B;AAGjB;IAAzE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;2DAAwB;AACrE;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAA2C;AAK7D;IAAR,KAAK,EAAE;wDAA0D;AACzD;IAAR,KAAK,EAAE;wDAA0D;AACzD;IAAR,KAAK,EAAE;mDAAgD;AAC/C;IAAR,KAAK,EAAE;iDAAgD;AAC/C;IAAR,KAAK,EAAE;0DAA8D;AAC7D;IAAR,KAAK,EAAE;4DAA8B;AAC7B;IAAR,KAAK,EAAE;wDAAgD;AAC/C;IAAR,KAAK,EAAE;yDAAkD;AACjD;IAAR,KAAK,EAAE;uDAA2C;AAC1C;IAAR,KAAK,EAAE;oDAA0B;AACzB;IAAR,KAAK,EAAE;qDAA2B;AAC1B;IAAR,KAAK,EAAE;mDAAyB;AAGxB;IAAR,KAAK,EAAE;4DAMN;AAG2B;IAA5B,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;sDAAyB;AACd;IAAtC,KAAK,CAAC,IAAI,wBAAwB,EAAE,CAAC;8DAAiC;AApE5D,mBAAmB;IAD/B,aAAa,CAAC,eAAe,CAAC;GAClB,mBAAmB,CAwjB/B;SAxjBY,mBAAmB","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 '../../shared/base-mixin.js';\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.type.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 '../../shared/controllers/dropdown.controller.js';\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 './core/string.helper.js';\nimport './core/locale.helper.js';\nimport { INPUT_STATE } from '../input/input.types.js';\n\n/**\n * HyDatePicker - A comprehensive date picker component\n * \n * @element hy-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 * <hy-datepicker \n * label=\"Select Date\"\n * field-format=\"DD/MM/YYYY\"\n * @nr-date-change=\"${this.handleDateChange}\">\n * </hy-datepicker>\n * ```\n * \n * @example Range picker\n * ```html\n * <hy-datepicker \n * range\n * label=\"Select Date Range\"\n * @nr-range-change=\"${this.handleRangeChange}\">\n * </hy-datepicker>\n * ```\n */\n@customElement('hy-datepicker')\nexport class HyDatePickerElement extends NuralyUIBaseMixin(LitElement) implements DatePickerHost {\n static override styles = styles;\n override requiredComponents = ['nr-input', 'nr-button', 'hy-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":"AAAA;;;;GAIG;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAkC,MAAM,KAAK,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GAIpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,0BAA0B,CAAC;AAGlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,IAAa,mBAAmB,GAAhC,MAAa,mBAAoB,SAAQ,iBAAiB,CAAC,UAAU,CAAC;IAAtE;;QAEW,uBAAkB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAEhF,iDAAiD;QACzC,uBAAkB,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC5D,wBAAmB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAC9D,uBAAkB,GAAG,IAAI,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/G,0BAAqB,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAClE,uBAAkB,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAEhE,qDAAqD;QACzB,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,EAAE,CAAC;QACc,cAAS,GAAG,EAAE,CAAC;QACZ,iBAAY,GAAG,EAAE,CAAC;QAC7C,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QAClB,WAAM,GAAG,cAAc,CAAC;QACG,gBAAW,GAAG,mBAAmB,CAAC;QAEzF,kCAAkC;QACL,UAAK,GAAG,KAAK,CAAC;QAK3C,gBAAgB;QACY,SAAI,GAAmB,cAAc,CAAC,MAAM,CAAC;QAC7C,SAAI,GAAmB,cAAc,CAAC,MAAM,CAAC;QAC7C,YAAO,GAAsB,iBAAiB,CAAC,OAAO,CAAC;QACvD,cAAS,GAAwB,mBAAmB,CAAC,IAAI,CAAC;QAC1D,UAAK,GAAG,EAAE,CAAC;QACX,WAAM,GAAG,EAAE,CAAC;QACZ,UAAK,uCAAsD;QACvB,uBAAkB,GAAG,KAAK,CAAC;QAE3F,iBAAiB;QACyD,mBAAc,GAAG,KAAK,CAAC;QACrE,SAAI,GAAmB,cAAc,CAAC,GAAG,CAAC;QAItE,mBAAmB;QACF,gBAAW,GAAmB,cAAc,CAAC,GAAG,CAAC;QACjD,gBAAW,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,WAAM,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC;QACvC,SAAI,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvC,kBAAa,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;QACrD,oBAAe,GAAG,EAAE,CAAC;QACrB,gBAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,iBAAY,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACzC,eAAU,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAKnD,wCAAwC;QAC/B,oBAAe,GAAoB;YAC1C,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,GAAG,EAAE,IAAI,CAAC,UAAU;aACrB;SACF,CAAC;QAMF,sBAAsB;QACL,eAAU,GAAG,UAAU,CAAC;QAkPzC,gDAAgD;QAChD,sBAAiB,GAAG,CAAC,KAAkB,EAAE,EAAE;YACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,qBAAgB,GAAG,CAAC,KAAkB,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;QACpE,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;QAChE,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QAClE,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QAE9D,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,eAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,eAAiC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;YACzF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC;IA8NJ,CAAC;IA/eU,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,uCAAuC;IACzC,CAAC;IAEQ,YAAY,CAAC,kBAAkC;QACtD,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,uBAAuB;QAC7B,iEAAiE;QACjE,oDAAoD;IACtD,CAAC;IAEQ,UAAU,CAAC,iBAAiC;QACnD,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,qDAAqD;QACrD,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;SAC/B;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,iBAAiC;QAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YAClE,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;YAChD,oFAAoF;SACrF;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EAAE;YACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,iBAAiC;QAChE,OAAO,CACL,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5E,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAChF,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;YACrB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,eAAe,mCACf,IAAI,CAAC,eAAe,KACvB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GACrD,CAAC;SACH;IACH,CAAC;IAED,0CAA0C;IAC1C,cAAc;QACZ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,IAAU;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,UAAkB;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,0DAA0D;IAE1D;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAU;QACnB,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,8CAA8C;QAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;gBAC7C,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB;gBAC3C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS;aAC5B,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC5C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5E,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;aAChC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE;oBACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;oBACzC,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAoB;QAChC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;IACV,gBAAgB;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;SACvE;aAAM;YACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;SACtE;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5D,CAAC;IAED,iBAAiB;IACjB,YAAY,CAAC,KAAkB;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C,yCAAyC;IAC3C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE;YACxC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAqCD,0BAA0B;IAClB,mBAAmB,CAAC,KAAY;QACtC,MAAM,WAAW,GAAG,KAAoB,CAAC;QACzC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,oCAAoC;IACxE,CAAC;IAEO,kBAAkB,CAAC,KAAY;QACrC,MAAM,WAAW,GAAG,KAAoB,CAAC;QACzC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,mDAAmD;IAC3C,oBAAoB,CAAC,UAAkB;QAC7C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,yDAAyD;IACzF,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,uDAAuD;IACpC,MAAM;QACvB,OAAO,IAAI,CAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9B,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAChD,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvD,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAA;;iBAEE,QAAQ,CAAC;YAChB,sBAAsB,EAAE,IAAI;YAC5B,qBAAqB,EAAE,IAAI,CAAC,QAAQ;YACpC,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;YACtC,CAAC,sBAAsB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;SAC7C,CAAC;sBACY,IAAI,CAAC,YAAY;;;gBAGvB,cAAc;mBACX,IAAI,CAAC,UAAU;oBACd,IAAI,CAAC,eAAe;mBACrB,IAAI,CAAC,IAAI;oBACR,IAAI,CAAC,KAAK;uBACP,IAAI,CAAC,QAAQ;uBACb,IAAI,CAAC,QAAQ;oBAChB,IAAI,CAAC,YAAY;oBACjB,IAAI,CAAC,OAAO;oBACZ,IAAI,CAAC,cAAc;sBACjB,IAAI,CAAC,aAAa;;2BAEb,IAAI,CAAC,cAAc;;wBAEtB,IAAI,CAAC,KAAK,IAAI,aAAa;;YAEvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO;YACpE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,OAAO;;UAE9E,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO;;KAE1D,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,iCAAiC;QACjC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,gCAAgC;IAC9D,CAAC;IAEO,cAAc;QACpB,qCAAqC;QACrC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,gCAAgC;IAC9D,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAA;;iBAEE,QAAQ,CAAC;YAChB,CAAC,wBAAwB,CAAC,EAAE,IAAI;YAChC,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,GAAG;YACvE,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI;SACtC,CAAC;;;;;;;;;qBASW,CAAC,YAAY,CAAC;sBACb,IAAI,CAAC,SAAS;;;YAGxB,IAAI,CAAC,oBAAoB,EAAE;;;;qBAIlB,CAAC,aAAa,CAAC;sBACd,IAAI,CAAC,SAAS;;;;;YAKxB,IAAI,CAAC,kBAAkB,EAAE;;;KAGhC,CAAC;IACJ,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC7B,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAY,WAAW;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,IAAI,GAAG,WAAW,GAAG,EAAE,EAAE,IAAI,IAAI,WAAW,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;YAClE,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACtB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;aACvB,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,IAAI;YACxC,CAAC,CAAC,IAAI,CAAA;;;4BAGY,IAAI,CAAC,YAAY;0BACnB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;iCACpC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;8BAChD,IAAI,CAAC,iBAAiB;;;;6BAIvB,KAAK;;;;WAIvB;YACD,CAAC,CAAC,OAAO;;;;wBAIK,IAAI,CAAC,WAAW;sBAClB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;6BACnC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;0BAC/C,IAAI,CAAC,gBAAgB;;;;yBAItB,KAAK;;;;;;uBAMP,CAAC,UAAU,CAAC;wBACX,IAAI,CAAC,QAAQ;;;;;uBAKd,CAAC,YAAY,CAAC;wBACb,IAAI,CAAC,QAAQ;;;;;;KAMhC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAA,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACjD,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAChD,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,UAAU;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,GAAG,CAAC;QACtE,OAAO,UAAU,CACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAChD;YACE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY;YAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;SACvC,EACD,OAAO,EACP,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrF,CAAC;IAEO,WAAW;QACjB,OAAO,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;CAGF,CAAA;AAvjBiB,0BAAM,GAAG,MAAO,CAAA;AAWJ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAAW;AACV;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAY;AACc;IAApD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;sDAAgB;AACZ;IAAvD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;yDAAmB;AAC7C;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDAAkB;AACjB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDAAkB;AAClB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAyB;AACG;IAAtD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;wDAAmC;AAG5D;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDAAe;AACQ;IAAlD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oDAAkB;AACjB;IAAlD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oDAAkB;AACZ;IAAvD,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;0DAA0B;AAGrD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAA8C;AAC7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAA8C;AAC7C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDAAwD;AACvD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAA2D;AAC1D;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAY;AACX;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAAa;AACZ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAA4D;AACvB;IAA/D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;+DAA4B;AAGjB;IAAzE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;2DAAwB;AACrE;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAA2C;AAK7D;IAAR,KAAK,EAAE;wDAA0D;AACzD;IAAR,KAAK,EAAE;wDAA0D;AACzD;IAAR,KAAK,EAAE;mDAAgD;AAC/C;IAAR,KAAK,EAAE;iDAAgD;AAC/C;IAAR,KAAK,EAAE;0DAA8D;AAC7D;IAAR,KAAK,EAAE;4DAA8B;AAC7B;IAAR,KAAK,EAAE;wDAAgD;AAC/C;IAAR,KAAK,EAAE;yDAAkD;AACjD;IAAR,KAAK,EAAE;uDAA2C;AAC1C;IAAR,KAAK,EAAE;oDAA0B;AACzB;IAAR,KAAK,EAAE;qDAA2B;AAC1B;IAAR,KAAK,EAAE;mDAAyB;AAGxB;IAAR,KAAK,EAAE;4DAMN;AAG2B;IAA5B,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;sDAAyB;AACd;IAAtC,KAAK,CAAC,IAAI,wBAAwB,EAAE,CAAC;8DAAiC;AApE5D,mBAAmB;IAD/B,aAAa,CAAC,eAAe,CAAC;GAClB,mBAAmB,CAwjB/B;SAxjBY,mBAAmB","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"]}
|
package/datepicker.style.d.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Datepicker component styles for the Hybrid UI Library
|
|
3
|
+
*
|
|
4
|
+
* This file contains all the styling for the nr-datepicker component, including:
|
|
5
|
+
* - Base datepicker styles with CSS custom properties for theming
|
|
6
|
+
* - Multiple datepicker states (default, disabled, focused)
|
|
7
|
+
* - Size variations (small, medium, large)
|
|
8
|
+
* - Calendar styling and positioning
|
|
9
|
+
* - Date selection states and range highlighting
|
|
10
|
+
* - Focus, disabled, and validation states
|
|
11
|
+
* - Dark theme support
|
|
12
|
+
*
|
|
13
|
+
* The styling system uses CSS custom properties with fallbacks to allow
|
|
14
|
+
* for both global and local customization of datepicker appearance.
|
|
5
15
|
*/
|
|
6
16
|
export declare const styles: import("lit").CSSResult;
|
|
7
17
|
//# sourceMappingURL=datepicker.style.d.ts.map
|