@paperless/core 2.0.1-beta.27 → 2.0.1-beta.28

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.
Files changed (53) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/build/p-8f3c711b.entry.js +2 -0
  3. package/dist/build/p-8f3c711b.entry.js.map +1 -0
  4. package/dist/build/{p-3e3983ec.js → p-b4dbe1b7.js} +1 -1
  5. package/dist/build/p-b51dcf11.js +2 -0
  6. package/dist/build/p-b51dcf11.js.map +1 -0
  7. package/dist/build/p-f4545481.entry.js +2 -0
  8. package/dist/build/p-f4545481.entry.js.map +1 -0
  9. package/dist/build/paperless.esm.js +1 -1
  10. package/dist/cjs/{index-08db8a87.js → index-64168fc4.js} +28 -1
  11. package/dist/cjs/index-64168fc4.js.map +1 -0
  12. package/dist/cjs/p-calendar.cjs.entry.js +3 -29
  13. package/dist/cjs/p-calendar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/p-datepicker.cjs.entry.js +39 -11
  15. package/dist/cjs/p-datepicker.cjs.entry.js.map +1 -1
  16. package/dist/collection/components/molecules/datepicker/datepicker.component.js +12 -11
  17. package/dist/collection/components/molecules/datepicker/datepicker.component.js.map +1 -1
  18. package/dist/components/calendar.component.js +1 -1
  19. package/dist/components/p-datepicker.js +39 -11
  20. package/dist/components/p-datepicker.js.map +1 -1
  21. package/dist/esm/{index-64e10183.js → index-27408d5b.js} +28 -2
  22. package/dist/esm/index-27408d5b.js.map +1 -0
  23. package/dist/esm/p-calendar.entry.js +1 -27
  24. package/dist/esm/p-calendar.entry.js.map +1 -1
  25. package/dist/esm/p-datepicker.entry.js +39 -11
  26. package/dist/esm/p-datepicker.entry.js.map +1 -1
  27. package/dist/index.html +1 -1
  28. package/dist/paperless/p-8f3c711b.entry.js +2 -0
  29. package/dist/paperless/p-8f3c711b.entry.js.map +1 -0
  30. package/dist/paperless/p-b51dcf11.js +2 -0
  31. package/dist/paperless/p-b51dcf11.js.map +1 -0
  32. package/dist/paperless/p-f4545481.entry.js +2 -0
  33. package/dist/paperless/p-f4545481.entry.js.map +1 -0
  34. package/dist/paperless/paperless.esm.js +1 -1
  35. package/dist/sw.js +1 -1
  36. package/dist/sw.js.map +1 -1
  37. package/hydrate/index.js +38 -10
  38. package/hydrate/index.mjs +38 -10
  39. package/package.json +1 -1
  40. package/dist/build/p-28601ee5.entry.js +0 -2
  41. package/dist/build/p-28601ee5.entry.js.map +0 -1
  42. package/dist/build/p-38edcb47.entry.js +0 -2
  43. package/dist/build/p-38edcb47.entry.js.map +0 -1
  44. package/dist/build/p-6bcfa4d5.js +0 -2
  45. package/dist/build/p-6bcfa4d5.js.map +0 -1
  46. package/dist/cjs/index-08db8a87.js.map +0 -1
  47. package/dist/esm/index-64e10183.js.map +0 -1
  48. package/dist/paperless/p-28601ee5.entry.js +0 -2
  49. package/dist/paperless/p-28601ee5.entry.js.map +0 -1
  50. package/dist/paperless/p-38edcb47.entry.js +0 -2
  51. package/dist/paperless/p-38edcb47.entry.js.map +0 -1
  52. package/dist/paperless/p-6bcfa4d5.js +0 -2
  53. package/dist/paperless/p-6bcfa4d5.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { h, Host, } from "@stencil/core";
2
- import { format, isAfter, isBefore, isSameDay, isValid, isWeekend, parse, startOfDay, } from "date-fns";
2
+ import { format, isAfter, isBefore, isSameDay, isValid, isWeekend, parse, startOfDay, startOfMonth, startOfYear, } from "date-fns";
3
3
  import { childOf, isMobileBrowser } from "../../../utils";
4
4
  export class Datepicker {
5
5
  constructor() {
@@ -112,13 +112,13 @@ export class Datepicker {
112
112
  if (this.mode !== 'day' && this.format === this._defaultFormats['day']) {
113
113
  this.format = this._defaultFormats[this.mode];
114
114
  }
115
- this._isMobileBrowser = isMobileBrowser();
115
+ this._isMobileBrowser = isMobileBrowser() || true;
116
116
  this.parseValue(this.value);
117
117
  }
118
118
  render() {
119
- return (h(Host, { key: 'e881e5fa8232fc6492bf9a51bb8221267e0e0af4', class: 'p-datepicker' }, h("p-dropdown", { key: 'ca71772e6beb08ecd7c728a86f37f68fdb43f009', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, h("p-field", { key: '8fbf40b4638c4a7dff3b25acaba3ba5ee097b08b', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (h("input", { key: 'b7bc7ee8e3f52d9d86df4d1b539e2a3126094bf2', slot: 'trigger', type: 'date', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
119
+ return (h(Host, { key: 'e48d3c9b517c3323fcc9c430a78721e1bad966a4', class: 'p-datepicker' }, h("p-dropdown", { key: 'c051904eae94288177f646bd200dab88cacc0895', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, h("p-field", { key: '7f5e16b89475a8ee35119116b592944830f6eb4f', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (h("input", { key: '1ff2cb32a56ec717126d7659813900f8fd7efb47', slot: 'trigger', type: this.mode === 'day' ? 'date' : 'month', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
120
120
  ,
121
- onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), h("div", { key: 'd72b8546a971766cef7aa700b07f5b182c9ced44', slot: 'items' }, h("p-calendar", { key: '2d49eda89f6f88a1f332f7b14748eaa42732475b', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
121
+ onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), h("div", { key: 'a935816c14866b2fc6375f1f85ba0dc26c243087', slot: 'items' }, h("p-calendar", { key: '3af01a1b9f52fad9b03ea5652a287e6673cbfe88', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
122
122
  }
123
123
  documentClickHandler({ target }) {
124
124
  if (!this._showDropdown || childOf(target, this._el)) {
@@ -166,7 +166,7 @@ export class Datepicker {
166
166
  }, 300);
167
167
  }
168
168
  _onNativeInput(ev) {
169
- if (!ev.target.value) {
169
+ if (!ev.target) {
170
170
  return;
171
171
  }
172
172
  if (this._onInputTimeout) {
@@ -174,11 +174,7 @@ export class Datepicker {
174
174
  this._onInputTimeout = null;
175
175
  }
176
176
  this._onInputTimeout = setTimeout(() => {
177
- const parsedValue = new Date(ev.target.value);
178
- if (!isValid(parsedValue)) {
179
- return;
180
- }
181
- this._setValue(parsedValue, false);
177
+ this._setValue(ev.target.value === '' ? null : new Date(ev.target.value), false);
182
178
  });
183
179
  }
184
180
  _setValue(value, hideDropdown = true) {
@@ -198,7 +194,12 @@ export class Datepicker {
198
194
  }
199
195
  return;
200
196
  }
201
- value = startOfDay(value);
197
+ value =
198
+ this.mode === 'day'
199
+ ? startOfDay(value)
200
+ : this.mode === 'month'
201
+ ? startOfMonth(value)
202
+ : startOfYear(value);
202
203
  const isSameValue = isSameDay(value, this._value);
203
204
  if (isSameValue) {
204
205
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.component.js","sourceRoot":"","sources":["../../../../src/components/molecules/datepicker/datepicker.component.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Placement, Strategy } from '@floating-ui/dom';\nimport {\n\tComponent,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from '@stencil/core';\nimport {\n\tformat,\n\tisAfter,\n\tisBefore,\n\tisSameDay,\n\tisValid,\n\tisWeekend,\n\tparse,\n\tstartOfDay,\n} from 'date-fns';\nimport { childOf, isMobileBrowser } from '../../../utils';\n\n@Component({\n\ttag: 'p-datepicker',\n\tstyleUrl: 'datepicker.component.css',\n\tshadow: false,\n})\nexport class Datepicker {\n\t/**\n\t * The placeholder of the input\n\t */\n\t@Prop() placeholder: string;\n\n\t/**\n\t * The current value\n\t */\n\t@Prop() value: Date | string | null | undefined;\n\n\t/**\n\t * Wethter to automatically preselect today\n\t */\n\t@Prop() preselectToday: boolean = false;\n\n\t/**\n\t * Enable native picker for mobile devices\n\t */\n\t@Prop() enableNativePicker: boolean = true;\n\n\t/**\n\t * Disabled dates\n\t */\n\t@Prop() disabledDates?: Array<Date | string> | string;\n\n\t/**\n\t * Min date\n\t */\n\t@Prop() minDate?: Date | string;\n\n\t/**\n\t * Max date\n\t */\n\t@Prop() maxDate?: Date | string;\n\n\t/**\n\t * Wether to disable the weekends\n\t */\n\t@Prop() disableWeekends: boolean = false;\n\n\t/**\n\t * The mode of the datepicker\n\t */\n\t@Prop() mode: 'year' | 'month' | 'day' = 'day';\n\n\t/**\n\t * Event when the value changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tvalueChange: EventEmitter<any>;\n\n\t/**\n\t * The display & parse format to use\n\t */\n\t@Prop() format: string = 'dd-MM-yyyy';\n\n\t/**\n\t * Hides the icon when filled\n\t */\n\t@Prop() hideIconWhenFilled: boolean = false;\n\n\t/**\n\t * The size of the input group used by the datepicker\n\t */\n\t@Prop() size: 'sm' | 'base' = 'base';\n\n\t/**\n\t * The prefix of the input group used by the datepicker\n\t */\n\t@Prop() prefix: string;\n\n\t/**\n\t * The label of the input group used by the datepicker\n\t */\n\t@Prop() label: string;\n\n\t/**\n\t * The helper of the input group used by the datepicker\n\t */\n\t@Prop() helper: string;\n\n\t/**\n\t * Wether the field is required\n\t */\n\t@Prop({ reflect: true }) required: boolean;\n\n\t/**\n\t * The helper of the input group used by the datepicker\n\t */\n\t@Prop({ reflect: true }) error: string;\n\n\t/**\n\t * Wether the input group is disabled used by the datepicker\n\t */\n\t@Prop({ reflect: true }) disabled: boolean = false;\n\n\t/**\n\t * The strategy of the dropdown placement\n\t */\n\t@Prop() strategy: Strategy = 'absolute';\n\n\t/**\n\t * The placement of the dropdown\n\t */\n\t@Prop({ reflect: true }) placement: Placement = 'bottom-start';\n\n\t/**\n\t * The host element\n\t */\n\t@Element() private _el: HTMLElement;\n\n\t@State() private _showDropdown: any = false;\n\t@State() private _value: Date;\n\t@State() private _minDate: Date;\n\t@State() private _maxDate: Date;\n\t@State() private _disabledDates: Date[] = [];\n\t@State() private _isMobileBrowser: boolean = false;\n\n\tprivate _onInputTimeout: NodeJS.Timeout;\n\tprivate _inputRef: HTMLInputElement | HTMLTextAreaElement;\n\tprivate _dateInputRef: HTMLInputElement;\n\n\tprivate _defaultFormats = {\n\t\tyear: 'yyyy',\n\t\tmonth: 'LLLL, yyyy',\n\t\tday: 'dd-MM-yyyy',\n\t};\n\n\t@Watch('value')\n\tprotected parseValue(value: string | Date) {\n\t\tif (!value && this.preselectToday) {\n\t\t\tvalue = new Date();\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = new Date(value);\n\t\t}\n\n\t\tthis._setValue(value);\n\t}\n\n\t@Watch('minDate')\n\tprotected parseMinDate(minDate: string | Date) {\n\t\tif (typeof minDate === 'string') {\n\t\t\tminDate = new Date(minDate);\n\t\t}\n\n\t\tif (!isValid(minDate)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._minDate = minDate;\n\n\t\tif (isBefore(this._value, this._minDate)) {\n\t\t\tthis._setValue(null);\n\t\t}\n\t}\n\n\t@Watch('maxDate')\n\tprotected parseMaxDate(maxDate: string | Date) {\n\t\tif (typeof maxDate === 'string') {\n\t\t\tmaxDate = new Date(maxDate);\n\t\t}\n\n\t\tif (!isValid(maxDate)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._maxDate = maxDate;\n\n\t\tif (isAfter(this._value, this._maxDate)) {\n\t\t\tthis._setValue(null);\n\t\t}\n\t}\n\n\t@Watch('disabledDates')\n\tprotected parseDisabledDates(disabledDates: Array<string | Date> | string) {\n\t\tif (typeof disabledDates === 'string') {\n\t\t\tdisabledDates = JSON.parse(disabledDates);\n\t\t}\n\n\t\tif (!disabledDates || !Array.isArray(disabledDates)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// normalize all to date\n\t\tthis._disabledDates = disabledDates\n\t\t\t.map(date => {\n\t\t\t\tif (typeof date === 'string') {\n\t\t\t\t\treturn new Date(date);\n\t\t\t\t}\n\n\t\t\t\treturn date;\n\t\t\t})\n\t\t\t.filter(date => isValid(date));\n\n\t\tif (this._isDisabledDay(this._value)) {\n\t\t\tthis._setValue(null);\n\t\t}\n\t}\n\n\tcomponentWillLoad() {\n\t\tif (this.disabledDates) {\n\t\t\tthis.parseDisabledDates(this.disabledDates);\n\t\t}\n\n\t\tif (this.minDate) {\n\t\t\tthis.parseMinDate(this.minDate);\n\t\t}\n\n\t\tif (this.maxDate) {\n\t\t\tthis.parseMaxDate(this.maxDate);\n\t\t}\n\n\t\tif (this.mode !== 'day' && this.format === this._defaultFormats['day']) {\n\t\t\tthis.format = this._defaultFormats[this.mode];\n\t\t}\n\n\t\tthis._isMobileBrowser = isMobileBrowser();\n\n\t\tthis.parseValue(this.value);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class='p-datepicker'>\n\t\t\t\t<p-dropdown\n\t\t\t\t\tstrategy={this.strategy}\n\t\t\t\t\tplacement={this.placement}\n\t\t\t\t\tdisableTriggerClick={true}\n\t\t\t\t\tapplyMaxWidth={false}\n\t\t\t\t\tapplyFullWidth={false}\n\t\t\t\t\tinsideClick={true}\n\t\t\t\t\tshow={this._showDropdown}\n\t\t\t\t>\n\t\t\t\t\t<p-field\n\t\t\t\t\t\tslot='trigger'\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tthis.hideIconWhenFilled && !!this._value ? null : 'calendar-multi'\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticonPosition='start'\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\tprefix={this.prefix}\n\t\t\t\t\t\tlabel={this.label}\n\t\t\t\t\t\thelper={this.helper}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\terror={this.error}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tfocused={this._showDropdown}\n\t\t\t\t\t\tvalue={this._getFormattedDate()}\n\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\tonFocus={() => this._onFocus()}\n\t\t\t\t\t\tonBlur={() => this._onBlur()}\n\t\t\t\t\t\tonValueChange={ev => this._onValueChange(ev.detail)}\n\t\t\t\t\t\tonInputRefChange={ev => (this._inputRef = ev.detail)}\n\t\t\t\t\t></p-field>\n\n\t\t\t\t\t{this.enableNativePicker && this._isMobileBrowser && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tslot='trigger'\n\t\t\t\t\t\t\ttype='date'\n\t\t\t\t\t\t\tclass='h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself\n\t\t\t\t\t\t\tonInput={ev => this._onNativeInput(ev)}\n\t\t\t\t\t\t\tref={ref => (this._dateInputRef = ref)}\n\t\t\t\t\t\t\tvalue={this._value && format(this._value, 'yyyy-MM-dd')}\n\t\t\t\t\t\t\tmin={this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd')}\n\t\t\t\t\t\t\tmax={this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd')}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div slot='items'>\n\t\t\t\t\t\t<p-calendar\n\t\t\t\t\t\t\tvariant='embedded'\n\t\t\t\t\t\t\tvalue={this._value}\n\t\t\t\t\t\t\tonValueChange={({ detail }) => (this.value = detail)}\n\t\t\t\t\t\t\tpreselectToday={this.preselectToday}\n\t\t\t\t\t\t\tdisabledDates={this.disabledDates}\n\t\t\t\t\t\t\tminDate={this.minDate}\n\t\t\t\t\t\t\tmaxDate={this.maxDate}\n\t\t\t\t\t\t\tdisableWeekends={this.disableWeekends}\n\t\t\t\t\t\t\tmode={this.mode}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</p-dropdown>\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t@Listen('click', { target: 'document', capture: true })\n\tprotected documentClickHandler({ target }) {\n\t\tif (!this._showDropdown || childOf(target, this._el)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._showDropdown = false;\n\t}\n\n\tprivate _onFocus() {\n\t\tif (this._isMobileBrowser && this._dateInputRef) {\n\t\t\tthis._dateInputRef.showPicker();\n\t\t\tthis._inputRef.blur();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._showDropdown = true;\n\t}\n\n\tprivate _onBlur() {\n\t\tif (this._isMobileBrowser && this._dateInputRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = this._inputRef;\n\n\t\tif (target.value === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = parse(target.value, this.format, new Date());\n\n\t\tif (value === this._value) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isValid(value) || this._isDisabledDay(value)) {\n\t\t\ttarget.value = this._getFormattedDate();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setValue(value, false);\n\t}\n\n\tprivate _onValueChange(value: string) {\n\t\tif (this._onInputTimeout) {\n\t\t\tclearTimeout(this._onInputTimeout);\n\t\t\tthis._onInputTimeout = null;\n\t\t}\n\n\t\tthis._onInputTimeout = setTimeout(() => {\n\t\t\tconst parsedValue = parse(value, this.format, new Date());\n\t\t\tif (!isValid(parsedValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setValue(parsedValue, false);\n\t\t}, 300);\n\t}\n\n\tprivate _onNativeInput(ev) {\n\t\tif (!ev.target.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._onInputTimeout) {\n\t\t\tclearTimeout(this._onInputTimeout);\n\t\t\tthis._onInputTimeout = null;\n\t\t}\n\n\t\tthis._onInputTimeout = setTimeout(() => {\n\t\t\tconst parsedValue = new Date(ev.target.value);\n\t\t\tif (!isValid(parsedValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setValue(parsedValue, false);\n\t\t});\n\t}\n\n\tprivate _setValue(value: Date | null, hideDropdown = true) {\n\t\tif (value === null) {\n\t\t\tthis._value = null;\n\t\t\tthis.valueChange.emit(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isValid(value)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isDisabledDay(value)) {\n\t\t\tif (!!this._dateInputRef?.value) {\n\t\t\t\tthis._dateInputRef.value = this._value\n\t\t\t\t\t? format(this._value, 'yyyy-MM-dd')\n\t\t\t\t\t: null;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalue = startOfDay(value);\n\t\tconst isSameValue = isSameDay(value, this._value);\n\n\t\tif (isSameValue) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (hideDropdown) {\n\t\t\tthis._showDropdown = false;\n\t\t}\n\n\t\tthis._value = value;\n\t\tthis.valueChange.emit(value);\n\t}\n\n\tprivate _isDisabledDay(day: Date) {\n\t\treturn (\n\t\t\t(this.disableWeekends && isWeekend(day)) ||\n\t\t\t(isBefore(day, this._minDate) && !isSameDay(day, this._minDate)) ||\n\t\t\t(isAfter(day, this._maxDate) && !isSameDay(day, this._maxDate)) ||\n\t\t\tthis._disabledDates.findIndex(date => isSameDay(date, day)) >= 0\n\t\t);\n\t}\n\n\tprivate _getFormattedDate() {\n\t\tif (!this._value) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn format(this._value, this.format);\n\t}\n}\n"]}
1
+ {"version":3,"file":"datepicker.component.js","sourceRoot":"","sources":["../../../../src/components/molecules/datepicker/datepicker.component.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Placement, Strategy } from '@floating-ui/dom';\nimport {\n\tComponent,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from '@stencil/core';\nimport {\n\tformat,\n\tisAfter,\n\tisBefore,\n\tisSameDay,\n\tisValid,\n\tisWeekend,\n\tparse,\n\tstartOfDay,\n\tstartOfMonth,\n\tstartOfYear,\n} from 'date-fns';\nimport { childOf, isMobileBrowser } from '../../../utils';\n\n@Component({\n\ttag: 'p-datepicker',\n\tstyleUrl: 'datepicker.component.css',\n\tshadow: false,\n})\nexport class Datepicker {\n\t/**\n\t * The placeholder of the input\n\t */\n\t@Prop() placeholder: string;\n\n\t/**\n\t * The current value\n\t */\n\t@Prop() value: Date | string | null | undefined;\n\n\t/**\n\t * Wethter to automatically preselect today\n\t */\n\t@Prop() preselectToday: boolean = false;\n\n\t/**\n\t * Enable native picker for mobile devices\n\t */\n\t@Prop() enableNativePicker: boolean = true;\n\n\t/**\n\t * Disabled dates\n\t */\n\t@Prop() disabledDates?: Array<Date | string> | string;\n\n\t/**\n\t * Min date\n\t */\n\t@Prop() minDate?: Date | string;\n\n\t/**\n\t * Max date\n\t */\n\t@Prop() maxDate?: Date | string;\n\n\t/**\n\t * Wether to disable the weekends\n\t */\n\t@Prop() disableWeekends: boolean = false;\n\n\t/**\n\t * The mode of the datepicker\n\t */\n\t@Prop() mode: 'year' | 'month' | 'day' = 'day';\n\n\t/**\n\t * Event when the value changes\n\t */\n\t@Event({\n\t\tbubbles: false,\n\t})\n\tvalueChange: EventEmitter<any>;\n\n\t/**\n\t * The display & parse format to use\n\t */\n\t@Prop() format: string = 'dd-MM-yyyy';\n\n\t/**\n\t * Hides the icon when filled\n\t */\n\t@Prop() hideIconWhenFilled: boolean = false;\n\n\t/**\n\t * The size of the input group used by the datepicker\n\t */\n\t@Prop() size: 'sm' | 'base' = 'base';\n\n\t/**\n\t * The prefix of the input group used by the datepicker\n\t */\n\t@Prop() prefix: string;\n\n\t/**\n\t * The label of the input group used by the datepicker\n\t */\n\t@Prop() label: string;\n\n\t/**\n\t * The helper of the input group used by the datepicker\n\t */\n\t@Prop() helper: string;\n\n\t/**\n\t * Wether the field is required\n\t */\n\t@Prop({ reflect: true }) required: boolean;\n\n\t/**\n\t * The helper of the input group used by the datepicker\n\t */\n\t@Prop({ reflect: true }) error: string;\n\n\t/**\n\t * Wether the input group is disabled used by the datepicker\n\t */\n\t@Prop({ reflect: true }) disabled: boolean = false;\n\n\t/**\n\t * The strategy of the dropdown placement\n\t */\n\t@Prop() strategy: Strategy = 'absolute';\n\n\t/**\n\t * The placement of the dropdown\n\t */\n\t@Prop({ reflect: true }) placement: Placement = 'bottom-start';\n\n\t/**\n\t * The host element\n\t */\n\t@Element() private _el: HTMLElement;\n\n\t@State() private _showDropdown: any = false;\n\t@State() private _value: Date;\n\t@State() private _minDate: Date;\n\t@State() private _maxDate: Date;\n\t@State() private _disabledDates: Date[] = [];\n\t@State() private _isMobileBrowser: boolean = false;\n\n\tprivate _onInputTimeout: NodeJS.Timeout;\n\tprivate _inputRef: HTMLInputElement | HTMLTextAreaElement;\n\tprivate _dateInputRef: HTMLInputElement;\n\n\tprivate _defaultFormats = {\n\t\tyear: 'yyyy',\n\t\tmonth: 'LLLL, yyyy',\n\t\tday: 'dd-MM-yyyy',\n\t};\n\n\t@Watch('value')\n\tprotected parseValue(value: string | Date) {\n\t\tif (!value && this.preselectToday) {\n\t\t\tvalue = new Date();\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = new Date(value);\n\t\t}\n\n\t\tthis._setValue(value);\n\t}\n\n\t@Watch('minDate')\n\tprotected parseMinDate(minDate: string | Date) {\n\t\tif (typeof minDate === 'string') {\n\t\t\tminDate = new Date(minDate);\n\t\t}\n\n\t\tif (!isValid(minDate)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._minDate = minDate;\n\n\t\tif (isBefore(this._value, this._minDate)) {\n\t\t\tthis._setValue(null);\n\t\t}\n\t}\n\n\t@Watch('maxDate')\n\tprotected parseMaxDate(maxDate: string | Date) {\n\t\tif (typeof maxDate === 'string') {\n\t\t\tmaxDate = new Date(maxDate);\n\t\t}\n\n\t\tif (!isValid(maxDate)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._maxDate = maxDate;\n\n\t\tif (isAfter(this._value, this._maxDate)) {\n\t\t\tthis._setValue(null);\n\t\t}\n\t}\n\n\t@Watch('disabledDates')\n\tprotected parseDisabledDates(disabledDates: Array<string | Date> | string) {\n\t\tif (typeof disabledDates === 'string') {\n\t\t\tdisabledDates = JSON.parse(disabledDates);\n\t\t}\n\n\t\tif (!disabledDates || !Array.isArray(disabledDates)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// normalize all to date\n\t\tthis._disabledDates = disabledDates\n\t\t\t.map(date => {\n\t\t\t\tif (typeof date === 'string') {\n\t\t\t\t\treturn new Date(date);\n\t\t\t\t}\n\n\t\t\t\treturn date;\n\t\t\t})\n\t\t\t.filter(date => isValid(date));\n\n\t\tif (this._isDisabledDay(this._value)) {\n\t\t\tthis._setValue(null);\n\t\t}\n\t}\n\n\tcomponentWillLoad() {\n\t\tif (this.disabledDates) {\n\t\t\tthis.parseDisabledDates(this.disabledDates);\n\t\t}\n\n\t\tif (this.minDate) {\n\t\t\tthis.parseMinDate(this.minDate);\n\t\t}\n\n\t\tif (this.maxDate) {\n\t\t\tthis.parseMaxDate(this.maxDate);\n\t\t}\n\n\t\tif (this.mode !== 'day' && this.format === this._defaultFormats['day']) {\n\t\t\tthis.format = this._defaultFormats[this.mode];\n\t\t}\n\n\t\tthis._isMobileBrowser = isMobileBrowser() || true;\n\n\t\tthis.parseValue(this.value);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class='p-datepicker'>\n\t\t\t\t<p-dropdown\n\t\t\t\t\tstrategy={this.strategy}\n\t\t\t\t\tplacement={this.placement}\n\t\t\t\t\tdisableTriggerClick={true}\n\t\t\t\t\tapplyMaxWidth={false}\n\t\t\t\t\tapplyFullWidth={false}\n\t\t\t\t\tinsideClick={true}\n\t\t\t\t\tshow={this._showDropdown}\n\t\t\t\t>\n\t\t\t\t\t<p-field\n\t\t\t\t\t\tslot='trigger'\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tthis.hideIconWhenFilled && !!this._value ? null : 'calendar-multi'\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticonPosition='start'\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\tprefix={this.prefix}\n\t\t\t\t\t\tlabel={this.label}\n\t\t\t\t\t\thelper={this.helper}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\terror={this.error}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tfocused={this._showDropdown}\n\t\t\t\t\t\tvalue={this._getFormattedDate()}\n\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\tonFocus={() => this._onFocus()}\n\t\t\t\t\t\tonBlur={() => this._onBlur()}\n\t\t\t\t\t\tonValueChange={ev => this._onValueChange(ev.detail)}\n\t\t\t\t\t\tonInputRefChange={ev => (this._inputRef = ev.detail)}\n\t\t\t\t\t></p-field>\n\n\t\t\t\t\t{this.enableNativePicker && this._isMobileBrowser && (\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tslot='trigger'\n\t\t\t\t\t\t\ttype={this.mode === 'day' ? 'date' : 'month'}\n\t\t\t\t\t\t\tclass='h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself\n\t\t\t\t\t\t\tonInput={ev => this._onNativeInput(ev)}\n\t\t\t\t\t\t\tref={ref => (this._dateInputRef = ref)}\n\t\t\t\t\t\t\tvalue={this._value && format(this._value, 'yyyy-MM-dd')}\n\t\t\t\t\t\t\tmin={this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd')}\n\t\t\t\t\t\t\tmax={this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd')}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div slot='items'>\n\t\t\t\t\t\t<p-calendar\n\t\t\t\t\t\t\tvariant='embedded'\n\t\t\t\t\t\t\tvalue={this._value}\n\t\t\t\t\t\t\tonValueChange={({ detail }) => (this.value = detail)}\n\t\t\t\t\t\t\tpreselectToday={this.preselectToday}\n\t\t\t\t\t\t\tdisabledDates={this.disabledDates}\n\t\t\t\t\t\t\tminDate={this.minDate}\n\t\t\t\t\t\t\tmaxDate={this.maxDate}\n\t\t\t\t\t\t\tdisableWeekends={this.disableWeekends}\n\t\t\t\t\t\t\tmode={this.mode}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</p-dropdown>\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t@Listen('click', { target: 'document', capture: true })\n\tprotected documentClickHandler({ target }) {\n\t\tif (!this._showDropdown || childOf(target, this._el)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._showDropdown = false;\n\t}\n\n\tprivate _onFocus() {\n\t\tif (this._isMobileBrowser && this._dateInputRef) {\n\t\t\tthis._dateInputRef.showPicker();\n\t\t\tthis._inputRef.blur();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._showDropdown = true;\n\t}\n\n\tprivate _onBlur() {\n\t\tif (this._isMobileBrowser && this._dateInputRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = this._inputRef;\n\n\t\tif (target.value === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = parse(target.value, this.format, new Date());\n\n\t\tif (value === this._value) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isValid(value) || this._isDisabledDay(value)) {\n\t\t\ttarget.value = this._getFormattedDate();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setValue(value, false);\n\t}\n\n\tprivate _onValueChange(value: string) {\n\t\tif (this._onInputTimeout) {\n\t\t\tclearTimeout(this._onInputTimeout);\n\t\t\tthis._onInputTimeout = null;\n\t\t}\n\n\t\tthis._onInputTimeout = setTimeout(() => {\n\t\t\tconst parsedValue = parse(value, this.format, new Date());\n\t\t\tif (!isValid(parsedValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setValue(parsedValue, false);\n\t\t}, 300);\n\t}\n\n\tprivate _onNativeInput(ev) {\n\t\tif (!ev.target) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._onInputTimeout) {\n\t\t\tclearTimeout(this._onInputTimeout);\n\t\t\tthis._onInputTimeout = null;\n\t\t}\n\n\t\tthis._onInputTimeout = setTimeout(() => {\n\t\t\tthis._setValue(\n\t\t\t\tev.target.value === '' ? null : new Date(ev.target.value),\n\t\t\t\tfalse\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _setValue(value: Date | null, hideDropdown = true) {\n\t\tif (value === null) {\n\t\t\tthis._value = null;\n\t\t\tthis.valueChange.emit(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isValid(value)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isDisabledDay(value)) {\n\t\t\tif (!!this._dateInputRef?.value) {\n\t\t\t\tthis._dateInputRef.value = this._value\n\t\t\t\t\t? format(this._value, 'yyyy-MM-dd')\n\t\t\t\t\t: null;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalue =\n\t\t\tthis.mode === 'day'\n\t\t\t\t? startOfDay(value)\n\t\t\t\t: this.mode === 'month'\n\t\t\t\t? startOfMonth(value)\n\t\t\t\t: startOfYear(value);\n\t\tconst isSameValue = isSameDay(value, this._value);\n\n\t\tif (isSameValue) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (hideDropdown) {\n\t\t\tthis._showDropdown = false;\n\t\t}\n\n\t\tthis._value = value;\n\t\tthis.valueChange.emit(value);\n\t}\n\n\tprivate _isDisabledDay(day: Date) {\n\t\treturn (\n\t\t\t(this.disableWeekends && isWeekend(day)) ||\n\t\t\t(isBefore(day, this._minDate) && !isSameDay(day, this._minDate)) ||\n\t\t\t(isAfter(day, this._maxDate) && !isSameDay(day, this._maxDate)) ||\n\t\t\tthis._disabledDates.findIndex(date => isSameDay(date, day)) >= 0\n\t\t);\n\t}\n\n\tprivate _getFormattedDate() {\n\t\tif (!this._value) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn format(this._value, this.format);\n\t}\n}\n"]}
@@ -3101,6 +3101,6 @@ function defineCustomElement() {
3101
3101
  } });
3102
3102
  }
3103
3103
 
3104
- export { Calendar as C, _typeof as _, startOfUTCISOWeek as a, getUTCWeek as b, toInteger as c, defineCustomElement as d, getUTCISOWeek as e, getDefaultOptions as f, getUTCWeekYear as g, subMilliseconds as h, getTimezoneOffsetInMilliseconds as i, defaultLocale as j, isProtectedWeekYearToken as k, longFormatters$1 as l, throwProtectedError as m, isProtectedDayOfYearToken as n, isValid as o, isBefore as p, isAfter as q, requiredArgs as r, startOfUTCWeek as s, toDate as t, format as u, startOfDay as v, isSameDay as w };
3104
+ export { Calendar as C, _typeof as _, startOfUTCISOWeek as a, getUTCWeek as b, toInteger as c, defineCustomElement as d, getUTCISOWeek as e, getDefaultOptions as f, getUTCWeekYear as g, subMilliseconds as h, getTimezoneOffsetInMilliseconds as i, defaultLocale as j, isProtectedWeekYearToken as k, longFormatters$1 as l, throwProtectedError as m, isProtectedDayOfYearToken as n, isValid as o, isBefore as p, isAfter as q, requiredArgs as r, startOfUTCWeek as s, toDate as t, format as u, startOfDay as v, startOfMonth as w, isSameDay as x };
3105
3105
 
3106
3106
  //# sourceMappingURL=calendar.component.js.map
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
2
2
  import { c as childOf } from './child-of.js';
3
3
  import { i as isMobileBrowser } from './is-mobile-browser.js';
4
4
  import { d as defineCustomElement$c } from './button.component.js';
5
- import { r as requiredArgs, t as toDate, _ as _typeof, g as getUTCWeekYear, s as startOfUTCWeek, a as startOfUTCISOWeek, b as getUTCWeek, c as toInteger, e as getUTCISOWeek, f as getDefaultOptions, l as longFormatters, h as subMilliseconds, i as getTimezoneOffsetInMilliseconds, j as defaultLocale, k as isProtectedWeekYearToken, m as throwProtectedError, n as isProtectedDayOfYearToken, o as isValid, p as isBefore, q as isAfter, u as format, v as startOfDay, w as isSameDay, d as defineCustomElement$b } from './calendar.component.js';
5
+ import { r as requiredArgs, t as toDate, _ as _typeof, g as getUTCWeekYear, s as startOfUTCWeek, a as startOfUTCISOWeek, b as getUTCWeek, c as toInteger, e as getUTCISOWeek, f as getDefaultOptions, l as longFormatters, h as subMilliseconds, i as getTimezoneOffsetInMilliseconds, j as defaultLocale, k as isProtectedWeekYearToken, m as throwProtectedError, n as isProtectedDayOfYearToken, o as isValid, p as isBefore, q as isAfter, u as format, v as startOfDay, w as startOfMonth, x as isSameDay, d as defineCustomElement$b } from './calendar.component.js';
6
6
  import { d as defineCustomElement$a } from './dropdown.component.js';
7
7
  import { d as defineCustomElement$9 } from './dropdown-menu-container.component.js';
8
8
  import { d as defineCustomElement$8 } from './field.component.js';
@@ -76,6 +76,33 @@ var millisecondsInHour = 3600000;
76
76
  */
77
77
  var millisecondsInSecond = 1000;
78
78
 
79
+ /**
80
+ * @name startOfYear
81
+ * @category Year Helpers
82
+ * @summary Return the start of a year for the given date.
83
+ *
84
+ * @description
85
+ * Return the start of a year for the given date.
86
+ * The result will be in the local timezone.
87
+ *
88
+ * @param {Date|Number} date - the original date
89
+ * @returns {Date} the start of a year
90
+ * @throws {TypeError} 1 argument required
91
+ *
92
+ * @example
93
+ * // The start of a year for 2 September 2014 11:55:00:
94
+ * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))
95
+ * //=> Wed Jan 01 2014 00:00:00
96
+ */
97
+ function startOfYear(dirtyDate) {
98
+ requiredArgs(1, arguments);
99
+ var cleanDate = toDate(dirtyDate);
100
+ var date = new Date(0);
101
+ date.setFullYear(cleanDate.getFullYear(), 0, 1);
102
+ date.setHours(0, 0, 0, 0);
103
+ return date;
104
+ }
105
+
79
106
  function assign(target, object) {
80
107
  if (target == null) {
81
108
  throw new TypeError('assign requires that input parameter not be null or undefined');
@@ -2974,13 +3001,13 @@ const Datepicker = /*@__PURE__*/ proxyCustomElement(class Datepicker extends HTM
2974
3001
  if (this.mode !== 'day' && this.format === this._defaultFormats['day']) {
2975
3002
  this.format = this._defaultFormats[this.mode];
2976
3003
  }
2977
- this._isMobileBrowser = isMobileBrowser();
3004
+ this._isMobileBrowser = isMobileBrowser() || true;
2978
3005
  this.parseValue(this.value);
2979
3006
  }
2980
3007
  render() {
2981
- return (h(Host, { key: 'e881e5fa8232fc6492bf9a51bb8221267e0e0af4', class: 'p-datepicker' }, h("p-dropdown", { key: 'ca71772e6beb08ecd7c728a86f37f68fdb43f009', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, h("p-field", { key: '8fbf40b4638c4a7dff3b25acaba3ba5ee097b08b', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (h("input", { key: 'b7bc7ee8e3f52d9d86df4d1b539e2a3126094bf2', slot: 'trigger', type: 'date', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
3008
+ return (h(Host, { key: 'e48d3c9b517c3323fcc9c430a78721e1bad966a4', class: 'p-datepicker' }, h("p-dropdown", { key: 'c051904eae94288177f646bd200dab88cacc0895', strategy: this.strategy, placement: this.placement, disableTriggerClick: true, applyMaxWidth: false, applyFullWidth: false, insideClick: true, show: this._showDropdown }, h("p-field", { key: '7f5e16b89475a8ee35119116b592944830f6eb4f', slot: 'trigger', icon: this.hideIconWhenFilled && !!this._value ? null : 'calendar-multi', iconPosition: 'start', size: this.size, prefix: this.prefix, label: this.label, helper: this.helper, required: this.required, error: this.error, disabled: this.disabled, focused: this._showDropdown, value: this._getFormattedDate(), placeholder: this.placeholder, onFocus: () => this._onFocus(), onBlur: () => this._onBlur(), onValueChange: ev => this._onValueChange(ev.detail), onInputRefChange: ev => (this._inputRef = ev.detail) }), this.enableNativePicker && this._isMobileBrowser && (h("input", { key: '1ff2cb32a56ec717126d7659813900f8fd7efb47', slot: 'trigger', type: this.mode === 'day' ? 'date' : 'month', class: 'h-0 overflow-hidden' // we use h-0 here so location dependent pickers can correctly place itself
2982
3009
  ,
2983
- onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), h("div", { key: 'd72b8546a971766cef7aa700b07f5b182c9ced44', slot: 'items' }, h("p-calendar", { key: '2d49eda89f6f88a1f332f7b14748eaa42732475b', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
3010
+ onInput: ev => this._onNativeInput(ev), ref: ref => (this._dateInputRef = ref), value: this._value && format(this._value, 'yyyy-MM-dd'), min: this.minDate && format(new Date(this.minDate), 'yyyy-MM-dd'), max: this.maxDate && format(new Date(this.maxDate), 'yyyy-MM-dd') })), h("div", { key: 'a935816c14866b2fc6375f1f85ba0dc26c243087', slot: 'items' }, h("p-calendar", { key: '3af01a1b9f52fad9b03ea5652a287e6673cbfe88', variant: 'embedded', value: this._value, onValueChange: ({ detail }) => (this.value = detail), preselectToday: this.preselectToday, disabledDates: this.disabledDates, minDate: this.minDate, maxDate: this.maxDate, disableWeekends: this.disableWeekends, mode: this.mode })))));
2984
3011
  }
2985
3012
  documentClickHandler({ target }) {
2986
3013
  if (!this._showDropdown || childOf(target, this._el)) {
@@ -3028,7 +3055,7 @@ const Datepicker = /*@__PURE__*/ proxyCustomElement(class Datepicker extends HTM
3028
3055
  }, 300);
3029
3056
  }
3030
3057
  _onNativeInput(ev) {
3031
- if (!ev.target.value) {
3058
+ if (!ev.target) {
3032
3059
  return;
3033
3060
  }
3034
3061
  if (this._onInputTimeout) {
@@ -3036,11 +3063,7 @@ const Datepicker = /*@__PURE__*/ proxyCustomElement(class Datepicker extends HTM
3036
3063
  this._onInputTimeout = null;
3037
3064
  }
3038
3065
  this._onInputTimeout = setTimeout(() => {
3039
- const parsedValue = new Date(ev.target.value);
3040
- if (!isValid(parsedValue)) {
3041
- return;
3042
- }
3043
- this._setValue(parsedValue, false);
3066
+ this._setValue(ev.target.value === '' ? null : new Date(ev.target.value), false);
3044
3067
  });
3045
3068
  }
3046
3069
  _setValue(value, hideDropdown = true) {
@@ -3060,7 +3083,12 @@ const Datepicker = /*@__PURE__*/ proxyCustomElement(class Datepicker extends HTM
3060
3083
  }
3061
3084
  return;
3062
3085
  }
3063
- value = startOfDay(value);
3086
+ value =
3087
+ this.mode === 'day'
3088
+ ? startOfDay(value)
3089
+ : this.mode === 'month'
3090
+ ? startOfMonth(value)
3091
+ : startOfYear(value);
3064
3092
  const isSameValue = isSameDay(value, this._value);
3065
3093
  if (isSameValue) {
3066
3094
  return;