@nepdatejs/vanilla 0.1.0 → 0.1.1

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 (57) hide show
  1. package/README.md +1 -1
  2. package/dist/auto-define.cjs +1 -1
  3. package/dist/auto-define.js +1 -1
  4. package/dist/{date-picker-ucoEFnMW.js → date-picker-BwlrlU5Y.js} +13 -30
  5. package/dist/date-picker-BwlrlU5Y.js.map +1 -0
  6. package/dist/{date-picker-CQoabjlj.cjs → date-picker-CgjYsf1w.cjs} +12 -29
  7. package/dist/date-picker-CgjYsf1w.cjs.map +1 -0
  8. package/dist/date-picker.cjs +1 -1
  9. package/dist/date-picker.js +1 -1
  10. package/dist/{date-range-picker-DAkCzVgT.js → date-range-picker-NwetXUC-.js} +13 -30
  11. package/dist/date-range-picker-NwetXUC-.js.map +1 -0
  12. package/dist/{date-range-picker-BQKcZeqG.cjs → date-range-picker-VrQZFZED.cjs} +12 -29
  13. package/dist/date-range-picker-VrQZFZED.cjs.map +1 -0
  14. package/dist/date-range-picker.cjs +1 -1
  15. package/dist/date-range-picker.js +1 -1
  16. package/dist/{date-time-picker-Bxfn-a9T.cjs → date-time-picker-ChHIBTBw.cjs} +12 -30
  17. package/dist/date-time-picker-ChHIBTBw.cjs.map +1 -0
  18. package/dist/{date-time-picker-BqweOP2u.js → date-time-picker-CxqC95aM.js} +12 -30
  19. package/dist/date-time-picker-CxqC95aM.js.map +1 -0
  20. package/dist/date-time-picker.cjs +1 -1
  21. package/dist/date-time-picker.js +1 -1
  22. package/dist/{define-DTTdLfIM.cjs → define-BbTIFHtH.cjs} +5 -5
  23. package/dist/{define-DTTdLfIM.cjs.map → define-BbTIFHtH.cjs.map} +1 -1
  24. package/dist/{define-7natoEH4.js → define-D96w8Zu2.js} +5 -5
  25. package/dist/{define-7natoEH4.js.map → define-D96w8Zu2.js.map} +1 -1
  26. package/dist/index.cjs +5 -5
  27. package/dist/index.js +5 -5
  28. package/dist/{multi-date-picker-XCg8Y0sF.js → multi-date-picker-C3Lr0Dq-.js} +13 -28
  29. package/dist/multi-date-picker-C3Lr0Dq-.js.map +1 -0
  30. package/dist/{multi-date-picker-BMEYUPBa.cjs → multi-date-picker-DUyuO-nH.cjs} +12 -27
  31. package/dist/multi-date-picker-DUyuO-nH.cjs.map +1 -0
  32. package/dist/multi-date-picker.cjs +1 -1
  33. package/dist/multi-date-picker.js +1 -1
  34. package/dist/nepdate-picker.global.js +2 -2
  35. package/dist/nepdate-picker.global.js.map +1 -1
  36. package/dist/preset-list-BYCZm61I.cjs +97 -0
  37. package/dist/preset-list-BYCZm61I.cjs.map +1 -0
  38. package/dist/preset-list-DmE6fJjr.js +80 -0
  39. package/dist/preset-list-DmE6fJjr.js.map +1 -0
  40. package/package.json +4 -4
  41. package/src/datetime-view.ts +12 -37
  42. package/src/multi-view.ts +11 -33
  43. package/src/panel.ts +61 -0
  44. package/src/picker-view.ts +11 -36
  45. package/src/range-view.ts +12 -37
  46. package/dist/date-picker-CQoabjlj.cjs.map +0 -1
  47. package/dist/date-picker-ucoEFnMW.js.map +0 -1
  48. package/dist/date-range-picker-BQKcZeqG.cjs.map +0 -1
  49. package/dist/date-range-picker-DAkCzVgT.js.map +0 -1
  50. package/dist/date-time-picker-BqweOP2u.js.map +0 -1
  51. package/dist/date-time-picker-Bxfn-a9T.cjs.map +0 -1
  52. package/dist/multi-date-picker-BMEYUPBa.cjs.map +0 -1
  53. package/dist/multi-date-picker-XCg8Y0sF.js.map +0 -1
  54. package/dist/preset-list-CASwnwmS.js +0 -45
  55. package/dist/preset-list-CASwnwmS.js.map +0 -1
  56. package/dist/preset-list-Cs8H12Wp.cjs +0 -50
  57. package/dist/preset-list-Cs8H12Wp.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker-VrQZFZED.cjs","names":["createDateRangePicker","uid","el","icon","PresetList","CalendarView","getLocale","openPanel","Base","presetIds","str","bool","calendarAttr","int","theme","panelLayout","onUnlessFalse","ELEMENT_NAMES"],"sources":["../src/range-view.ts","../src/date-range-picker-element.ts","../src/date-range-picker.ts"],"sourcesContent":["import { getLocale } from '@nepdatejs/core';\nimport {\n createDateRangePicker,\n type DateRangePickerOptions,\n type DateRangePickerState,\n type DateRangePickerStore,\n type RangeField,\n} from '@nepdatejs/datepicker';\nimport { restoreFocus, type PanelLayout } from '@nepdatejs/dom';\nimport { CalendarView } from './calendar-view';\nimport { openPanel, renderSegment } from './panel';\nimport { el, icon, setAttrs, setPopupMode, setText, uid } from './dom';\nimport { PANEL_WIDTH, PANEL_WIDTH_WITH_PRESETS, PresetList } from './preset-list';\nimport type { Theme } from './picker-view';\n\nexport interface DateRangePickerViewOptions extends DateRangePickerOptions {\n /** Field names for plain form posts; hidden inputs are rendered when set. */\n readonly startName?: string | undefined;\n readonly endName?: string | undefined;\n readonly hiddenInput?: boolean | undefined;\n readonly disabled?: boolean | undefined;\n readonly required?: boolean | undefined;\n /** 'sheet' opens a bottom sheet; 'popover' sits beside the field; 'auto' (default) uses the sheet below 480px. */\n readonly panelLayout?: PanelLayout | undefined;\n readonly theme?: Theme | undefined;\n readonly startLabel?: string | undefined;\n readonly endLabel?: string | undefined;\n /** Show a \"Fiscal year\" button that switches the panel to fiscal-year tiles. */\n readonly fiscalYearView?: boolean | undefined;\n readonly onOpenChange?: ((open: boolean) => void) | undefined;\n}\n\nconst VIEW_KEYS = new Set([\n 'startName',\n 'endName',\n 'hiddenInput',\n 'disabled',\n 'required',\n 'theme',\n 'panelLayout',\n 'startLabel',\n 'endLabel',\n 'fiscalYearView',\n 'onOpenChange',\n 'onChange',\n 'onCalendarChange',\n]);\n\n/** Two date fields (start, end) sharing one panel calendar in range mode. */\nexport class DateRangePickerView {\n readonly store: DateRangePickerStore;\n readonly inputs: Record<RangeField, HTMLInputElement>;\n private options: DateRangePickerViewOptions;\n private readonly field: HTMLDivElement;\n private readonly boxes: Record<RangeField, HTMLDivElement>;\n private readonly toggleButton: HTMLButtonElement;\n private readonly hint: HTMLParagraphElement;\n private readonly panel: HTMLDivElement;\n private readonly segment: HTMLDivElement;\n private readonly fiscalButton: HTMLButtonElement;\n private readonly footer: HTMLDivElement;\n private readonly hidden: Record<RangeField, HTMLInputElement>;\n private readonly calendarView: CalendarView;\n private readonly presetList: PresetList;\n private readonly unsubscribe: () => void;\n private closePanel: (() => void) | null = null;\n private wasOpen = false;\n\n constructor(host: HTMLElement, options: DateRangePickerViewOptions = {}) {\n this.options = { ...options };\n this.store = createDateRangePicker({\n ...storeOptions(options),\n onChange: (value, detail) => {\n this.options.onChange?.(value, detail);\n },\n onCalendarChange: (calendar) => {\n this.options.onCalendarChange?.(calendar);\n },\n });\n const id = uid('ndp-range');\n const makeInput = (field: RangeField): HTMLInputElement => {\n const input = el('input', {\n class: 'ndp-input__control',\n id: `${id}-${field}`,\n type: 'text',\n inputmode: 'numeric',\n autocomplete: 'off',\n 'aria-controls': `${id}-panel`,\n 'data-field': field,\n });\n input.addEventListener('input', () => {\n this.store.actions.type(field, input.value);\n });\n input.addEventListener('blur', () => {\n this.store.actions.blur(field);\n });\n input.addEventListener('keydown', (event) => {\n if (event.key === 'ArrowDown' && (event.altKey || input.value === '')) {\n event.preventDefault();\n this.open();\n }\n });\n return input;\n };\n this.inputs = { start: makeInput('start'), end: makeInput('end') };\n this.toggleButton = el(\n 'button',\n { type: 'button', class: 'ndp-icon-button', 'data-action': 'toggle' },\n [icon('calendar')],\n );\n this.boxes = {\n start: el('div', { class: 'ndp-input' }, [this.inputs.start]),\n end: el('div', { class: 'ndp-input' }, [\n this.inputs.end,\n el('span', { class: 'ndp-input__actions' }, [this.toggleButton]),\n ]),\n };\n this.hint = el('p', {\n class: 'ndp-hint',\n id: `${id}-hint`,\n 'aria-live': 'polite',\n hidden: true,\n });\n this.hidden = {\n start: el('input', { type: 'hidden' }),\n end: el('input', { type: 'hidden' }),\n };\n this.segment = el('div', { class: 'ndp-segment', role: 'group' }, [\n el('button', { type: 'button', class: 'ndp-segment__item', 'data-calendar': 'BS' }),\n el('button', { type: 'button', class: 'ndp-segment__item', 'data-calendar': 'AD' }),\n ]);\n this.fiscalButton = el('button', {\n type: 'button',\n class: 'ndp-button',\n 'data-action': 'fiscal',\n });\n this.footer = el('div', { class: 'ndp-panel__footer' }, [\n this.segment,\n this.fiscalButton,\n ]);\n const calendarRoot = el('div', { class: 'ndp-panel__calendar' });\n this.presetList = new PresetList((id) => {\n if (this.store.actions.applyPreset(id) && !this.store.getState().open) {\n restoreFocus(this.inputs.start);\n }\n });\n this.panel = el(\n 'div',\n {\n class: 'ndp-panel',\n id: `${id}-panel`,\n\n hidden: true,\n },\n [\n el('div', { class: 'ndp-panel__body' }, [this.presetList.element, calendarRoot]),\n this.footer,\n ],\n );\n const row = el('div', { class: 'ndp-range' }, [\n this.boxes.start,\n el('span', { class: 'ndp-range__separator', 'aria-hidden': 'true' }, ['→']),\n this.boxes.end,\n ]);\n this.field = el('div', { class: 'ndp-field' }, [\n row,\n this.hint,\n this.panel,\n this.hidden.start,\n this.hidden.end,\n ]);\n host.append(this.field);\n this.calendarView = new CalendarView(calendarRoot, this.store.calendar, {\n locale: () => this.options.locale,\n onDayActivate: (date) => {\n if (this.store.actions.select(date) && !this.store.getState().open) {\n restoreFocus(this.inputs.end);\n }\n },\n });\n this.field.addEventListener('click', this.onClick);\n this.unsubscribe = this.store.subscribe(() => {\n this.render();\n });\n this.render();\n }\n\n getState(): DateRangePickerState {\n return this.store.getState();\n }\n\n setOptions(changes: Partial<DateRangePickerViewOptions>): void {\n this.options = { ...this.options, ...changes };\n const forStore = storeOptions(changes);\n if (Object.keys(forStore).length > 0) {\n this.store.setOptions(forStore);\n } else {\n this.render();\n }\n }\n\n open(): void {\n if (!this.options.disabled) {\n this.store.actions.open();\n }\n }\n\n close(): void {\n this.store.actions.close();\n }\n\n destroy(): void {\n this.closePanel?.();\n this.unsubscribe();\n this.calendarView.destroy();\n this.field.remove();\n }\n\n private render(): void {\n const state = this.store.getState();\n const locale = getLocale(this.options.locale);\n const disabled = this.options.disabled ?? false;\n const hintText = state.error?.message ?? null;\n const texts: Record<RangeField, string> = {\n start: state.startText,\n end: state.endText,\n };\n const labels: Record<RangeField, string | undefined> = {\n start: this.options.startLabel,\n end: this.options.endLabel,\n };\n for (const field of ['start', 'end'] as const) {\n const input = this.inputs[field];\n if (input.value !== texts[field]) {\n input.value = texts[field];\n }\n const error = state.error;\n const fieldError =\n error !== null && (error.field === field || error.field === 'range');\n input.setCustomValidity(fieldError ? error.message : '');\n setAttrs(input, {\n placeholder: state.placeholder,\n disabled,\n required: this.options.required ?? false,\n 'aria-label': labels[field] ?? null,\n 'aria-invalid': fieldError ? 'true' : null,\n 'aria-describedby': hintText ? this.hint.id : null,\n });\n setAttrs(this.boxes[field], {\n 'data-invalid': fieldError,\n 'data-disabled': disabled,\n });\n const name =\n this.options.hiddenInput === false\n ? undefined\n : field === 'start'\n ? this.options.startName\n : this.options.endName;\n setAttrs(this.hidden[field], { name: name ?? null });\n this.hidden[field].value = state.value[field];\n this.hidden[field].disabled = name === undefined || disabled;\n }\n setAttrs(this.field, { 'data-ndp-theme': this.options.theme ?? null });\n setAttrs(this.panel, {\n 'data-ndp-theme': this.options.theme ?? null,\n 'aria-label': locale.labels.chooseDate,\n });\n setAttrs(this.toggleButton, {\n disabled,\n 'aria-label': locale.labels.openCalendar,\n 'aria-expanded': state.open ? 'true' : 'false',\n });\n this.hint.hidden = hintText === null;\n setText(this.hint, hintText ?? '');\n setAttrs(this.hint, { 'data-error': hintText !== null });\n renderSegment(this.segment, state, locale);\n this.presetList.render(state.presets, locale.labels.presets);\n const fiscal = this.options.fiscalYearView ?? false;\n this.fiscalButton.hidden = !fiscal;\n setText(this.fiscalButton, locale.labels.fiscalYear);\n setAttrs(this.fiscalButton, {\n 'aria-pressed': state.calendarState.view === 'fiscal' ? 'true' : 'false',\n });\n this.footer.hidden = !fiscal && !state.canSwitchCalendar;\n setPopupMode(\n state,\n [this.inputs.start, this.inputs.end],\n this.toggleButton,\n this.panel,\n );\n this.syncPanel(state.open && !state.inline);\n this.panel.hidden = !state.inline && !this.wasOpen;\n this.panel.style.setProperty(\n '--ndp-panel-width',\n state.inline ? `${String(this.panelWidth())}px` : null,\n );\n }\n\n private panelWidth(): number {\n return this.store.getState().presets.length > 0\n ? PANEL_WIDTH_WITH_PRESETS\n : PANEL_WIDTH;\n }\n\n private syncPanel(open: boolean): void {\n if (open === this.wasOpen) {\n return;\n }\n this.wasOpen = open;\n this.options.onOpenChange?.(open);\n if (open) {\n const anchor = this.field.querySelector('.ndp-range') ?? this.field;\n this.closePanel = openPanel({\n panel: this.panel,\n anchor,\n inside: [this.field],\n width: this.panelWidth(),\n layout: this.options.panelLayout,\n close: () => {\n this.store.actions.close();\n },\n returnFocus: this.inputs.start,\n });\n this.calendarView.focusGrid();\n } else {\n this.closePanel?.();\n this.closePanel = null;\n }\n }\n\n private readonly onClick = (event: MouseEvent): void => {\n const target = event.target instanceof Element ? event.target : null;\n if (!target || this.calendarView.element.contains(target)) {\n return;\n }\n const calendar = target.closest<HTMLElement>('[data-calendar]')?.dataset['calendar'];\n if (calendar === 'BS' || calendar === 'AD') {\n this.store.actions.switchCalendar(calendar);\n return;\n }\n if (target.closest('[data-action=\"fiscal\"]')) {\n const calendar = this.store.calendar;\n calendar.actions.setView(calendar.getState().view === 'fiscal' ? 'day' : 'fiscal');\n this.calendarView.focusGrid();\n return;\n }\n if (target.closest('[data-action=\"toggle\"]')) {\n if (this.store.getState().open) {\n this.close();\n } else {\n this.open();\n }\n }\n };\n}\n\nfunction storeOptions(\n options: Partial<DateRangePickerViewOptions>,\n): Partial<DateRangePickerOptions> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options)) {\n if (!VIEW_KEYS.has(key)) {\n out[key] = value;\n }\n }\n\n return out;\n}\n","import type { RangePreset } from '@nepdatejs/datepicker';\nimport { DateRangePickerView, type DateRangePickerViewOptions } from './range-view';\nimport {\n Base,\n str,\n bool,\n calendarAttr,\n int,\n onUnlessFalse,\n panelLayout,\n theme,\n presetIds,\n swallowInnerChange,\n type RichProps,\n} from './element-utils';\n\n/**\n * <nep-date-range-picker name=\"leave\" min-days=\"1\"></nep-date-range-picker>\n *\n * Two BS/AD fields sharing one panel. The form receives `${name}-start` and\n * `${name}-end` (or `start-name` / `end-name`). Fires `change` with { value }.\n */\nexport class NepDateRangePickerElement extends Base {\n static readonly formAssociated = true;\n static readonly observedAttributes: readonly string[] = [\n 'start',\n 'end',\n 'name',\n 'start-name',\n 'end-name',\n 'min',\n 'max',\n 'calendar',\n 'default-calendar',\n 'locale',\n 'min-days',\n 'max-days',\n 'disabled',\n 'required',\n 'theme',\n 'panel-layout',\n 'mask',\n 'inline',\n 'start-label',\n 'end-label',\n 'presets',\n 'fiscal-years',\n ];\n\n view: DateRangePickerView | null = null;\n private readonly internals: ElementInternals | null;\n private rich: RichProps = {};\n private customPresets: readonly RangePreset[] | undefined;\n private unsubscribe: (() => void) | null = null;\n\n constructor() {\n super();\n this.internals =\n typeof this.attachInternals === 'function' ? this.attachInternals() : null;\n swallowInnerChange(this);\n }\n\n get value(): { start: string; end: string } {\n return this.view?.getState().value ?? { start: '', end: '' };\n }\n set value(next: { start: string; end: string }) {\n this.view?.store.actions.setValue(next);\n }\n set holidays(next: RichProps['holidays']) {\n this.rich = { ...this.rich, holidays: next };\n this.view?.setOptions({ holidays: next });\n }\n set isDateDisabled(next: RichProps['isDateDisabled']) {\n this.rich = { ...this.rich, isDateDisabled: next };\n this.view?.setOptions({ isDateDisabled: next });\n }\n /** Shortcuts, including custom { id, label, resolve } ones. Overrides the presets attribute. */\n get presets(): readonly RangePreset[] | undefined {\n return this.customPresets ?? (presetIds(this) as readonly RangePreset[] | undefined);\n }\n set presets(next: readonly RangePreset[] | undefined) {\n this.customPresets = next;\n this.view?.setOptions({ presets: this.presets });\n }\n\n connectedCallback(): void {\n if (this.view) {\n return;\n }\n const view = new DateRangePickerView(this, {\n ...this.readOptions(),\n defaultValue: { start: str(this, 'start') ?? '', end: str(this, 'end') ?? '' },\n onChange: (value) => {\n this.dispatchEvent(\n new CustomEvent('change', { bubbles: true, detail: { value } }),\n );\n },\n onOpenChange: (open) => {\n this.dispatchEvent(\n new CustomEvent(open ? 'nep-open' : 'nep-close', { bubbles: true }),\n );\n },\n });\n this.view = view;\n this.unsubscribe = view.store.subscribe(() => {\n this.syncForm();\n });\n this.syncForm();\n }\n\n disconnectedCallback(): void {\n this.unsubscribe?.();\n this.view?.destroy();\n this.view = null;\n }\n\n attributeChangedCallback(): void {\n this.view?.setOptions(this.readOptions());\n this.syncForm();\n }\n\n formResetCallback(): void {\n this.view?.store.actions.reset();\n }\n\n formDisabledCallback(disabled: boolean): void {\n this.view?.setOptions({ disabled: disabled || bool(this, 'disabled') });\n }\n\n private names(): { start: string | undefined; end: string | undefined } {\n const name = str(this, 'name');\n\n return {\n start: str(this, 'start-name') ?? (name ? `${name}-start` : undefined),\n end: str(this, 'end-name') ?? (name ? `${name}-end` : undefined),\n };\n }\n\n private readOptions(): DateRangePickerViewOptions {\n const names = this.names();\n\n return {\n ...this.rich,\n startName: names.start,\n endName: names.end,\n hiddenInput: this.internals === null,\n min: str(this, 'min'),\n max: str(this, 'max'),\n calendar: calendarAttr(this, 'calendar'),\n defaultCalendar: calendarAttr(this, 'default-calendar'),\n locale: str(this, 'locale'),\n minDays: int(this, 'min-days'),\n maxDays: int(this, 'max-days'),\n disabled: bool(this, 'disabled'),\n required: bool(this, 'required'),\n theme: theme(this),\n panelLayout: panelLayout(this),\n mask: onUnlessFalse(this, 'mask'),\n inline: this.hasAttribute('inline'),\n startLabel: str(this, 'start-label'),\n endLabel: str(this, 'end-label'),\n fiscalYearView: bool(this, 'fiscal-years'),\n presets: this.presets,\n };\n }\n\n private syncForm(): void {\n const view = this.view;\n if (!view || !this.internals) {\n return;\n }\n const state = view.getState();\n const names = this.names();\n const data = new FormData();\n if (names.start && state.value.start) {\n data.append(names.start, state.value.start);\n }\n if (names.end && state.value.end) {\n data.append(names.end, state.value.end);\n }\n this.internals.setFormValue(data);\n if (state.error) {\n this.internals.setValidity(\n { customError: true },\n state.error.message,\n view.inputs.start,\n );\n } else if (\n bool(this, 'required') &&\n (state.value.start === '' || state.value.end === '')\n ) {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please choose a start and end date.',\n view.inputs.start,\n );\n } else {\n this.internals.setValidity({});\n }\n }\n}\n","/** `@nepdatejs/vanilla/date-range-picker`: just the range picker. */\nimport { NepDateRangePickerElement } from './date-range-picker-element';\nimport { DateRangePickerView, type DateRangePickerViewOptions } from './range-view';\nimport { defineElement, ELEMENT_NAMES } from './registry';\n\nexport { NepDateRangePickerElement };\nexport { DateRangePickerView, type DateRangePickerViewOptions } from './range-view';\n\n/** Register <nep-date-range-picker> (skipped if already defined). */\nexport function defineDateRangePicker(registry?: CustomElementRegistry): void {\n defineElement(ELEMENT_NAMES.dateRangePicker, NepDateRangePickerElement, registry);\n}\n\n/** Mount a date range picker into a container. */\nexport function createDateRangePicker(\n container: HTMLElement,\n options: DateRangePickerViewOptions = {},\n): DateRangePickerView {\n return new DateRangePickerView(container, options);\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_date_range_picker = require("./date-range-picker-BQKcZeqG.cjs");
2
+ const require_date_range_picker = require("./date-range-picker-VrQZFZED.cjs");
3
3
  exports.DateRangePickerView = require_date_range_picker.DateRangePickerView;
4
4
  exports.NepDateRangePickerElement = require_date_range_picker.NepDateRangePickerElement;
5
5
  exports.createDateRangePicker = require_date_range_picker.createDateRangePicker;
@@ -1 +1 @@
1
- export { i as DateRangePickerView, r as NepDateRangePickerElement, t as createDateRangePicker, n as defineDateRangePicker } from "./date-range-picker-DAkCzVgT.js";
1
+ export { i as DateRangePickerView, r as NepDateRangePickerElement, t as createDateRangePicker, n as defineDateRangePicker } from "./date-range-picker-NwetXUC-.js";
@@ -1,8 +1,7 @@
1
1
  const require_registry = require("./registry-3qzdVB7H.cjs");
2
- const require_preset_list = require("./preset-list-Cs8H12Wp.cjs");
2
+ const require_preset_list = require("./preset-list-BYCZm61I.cjs");
3
3
  let _nepdatejs_core = require("@nepdatejs/core");
4
4
  let _nepdatejs_datepicker = require("@nepdatejs/datepicker");
5
- let _nepdatejs_dom = require("@nepdatejs/dom");
6
5
  //#region src/datetime-view.ts
7
6
  const VIEW_KEYS = /* @__PURE__ */ new Set([
8
7
  "name",
@@ -244,13 +243,7 @@ var DateTimePickerView = class {
244
243
  this.hint.hidden = hint === null;
245
244
  require_registry.setText(this.hint, hint ?? "");
246
245
  require_registry.setAttrs(this.hint, { "data-error": state.error !== null });
247
- this.segment.hidden = !state.canSwitchCalendar;
248
- require_registry.setAttrs(this.segment, { "aria-label": locale.labels.calendar });
249
- for (const button of this.segment.querySelectorAll("button")) {
250
- const calendar = button.dataset["calendar"];
251
- require_registry.setText(button, locale.calendarNames[calendar]);
252
- require_registry.setAttrs(button, { "aria-pressed": calendar === state.calendar ? "true" : "false" });
253
- }
246
+ require_preset_list.renderSegment(this.segment, state, locale);
254
247
  require_registry.setText(this.nowButton, locale.labels.now);
255
248
  require_registry.setText(this.doneButton, locale.labels.done);
256
249
  require_registry.setAttrs(this.time, { "aria-label": locale.labels.time });
@@ -276,28 +269,17 @@ var DateTimePickerView = class {
276
269
  this.wasOpen = open;
277
270
  this.options.onOpenChange?.(open);
278
271
  if (open) {
279
- this.panel.hidden = false;
280
- const stopTracking = (0, _nepdatejs_dom.trackPosition)(this.row, this.panel, {
272
+ this.closePanel = require_preset_list.openPanel({
273
+ panel: this.panel,
274
+ anchor: this.row,
275
+ inside: [this.field],
281
276
  width: this.panelWidth(),
282
- layout: this.options.panelLayout
283
- });
284
- const stopOutside = (0, _nepdatejs_dom.onOutsidePointer)([this.field], () => {
285
- this.store.actions.close();
286
- });
287
- const stopBackdrop = (0, _nepdatejs_dom.onBackdropPointer)(this.panel, () => {
288
- this.store.actions.close();
289
- });
290
- const stopEscape = (0, _nepdatejs_dom.onEscape)(() => {
291
- this.store.actions.close();
292
- (0, _nepdatejs_dom.restoreFocus)(this.dateInput);
277
+ layout: this.options.panelLayout,
278
+ close: () => {
279
+ this.store.actions.close();
280
+ },
281
+ returnFocus: this.dateInput
293
282
  });
294
- this.closePanel = () => {
295
- stopTracking();
296
- stopOutside();
297
- stopBackdrop();
298
- stopEscape();
299
- this.panel.hidden = true;
300
- };
301
283
  for (const item of this.time.querySelectorAll("[aria-pressed=\"true\"]")) if (typeof item.scrollIntoView === "function") item.scrollIntoView({ block: "nearest" });
302
284
  this.calendarView.focusGrid();
303
285
  } else {
@@ -507,4 +489,4 @@ Object.defineProperty(exports, "defineDateTimePicker", {
507
489
  }
508
490
  });
509
491
 
510
- //# sourceMappingURL=date-time-picker-Bxfn-a9T.cjs.map
492
+ //# sourceMappingURL=date-time-picker-ChHIBTBw.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-time-picker-ChHIBTBw.cjs","names":["createDateTimePicker","uid","el","icon","PresetList","CalendarView","getLocale","openPanel","Base","str","bool","calendarAttr","theme","panelLayout","onUnlessFalse","int","presetIds","ELEMENT_NAMES"],"sources":["../src/datetime-view.ts","../src/date-time-picker-element.ts","../src/date-time-picker.ts"],"sourcesContent":["import { getLocale } from '@nepdatejs/core';\nimport {\n createDateTimePicker,\n type DateTimePickerOptions,\n type DateTimePickerState,\n type DateTimePickerStore,\n type TimeCell,\n} from '@nepdatejs/datepicker';\nimport type { PanelLayout } from '@nepdatejs/dom';\nimport { CalendarView } from './calendar-view';\nimport { openPanel, renderSegment } from './panel';\nimport { el, icon, setAttrs, setPopupMode, setText, uid } from './dom';\nimport type { Theme } from './picker-view';\nimport {\n PANEL_WIDTH,\n PANEL_WIDTH_WITH_PRESETS,\n PresetList,\n TIME_COLUMNS_WIDTH,\n} from './preset-list';\n\nexport interface DateTimePickerViewOptions extends DateTimePickerOptions {\n readonly name?: string | undefined;\n readonly hiddenInput?: boolean | undefined;\n readonly required?: boolean | undefined;\n readonly disabled?: boolean | undefined;\n /** 'sheet' opens a bottom sheet; 'popover' sits beside the field; 'auto' (default) uses the sheet below 480px. */\n readonly panelLayout?: PanelLayout | undefined;\n readonly theme?: Theme | undefined;\n readonly ariaLabel?: string | undefined;\n readonly timeLabel?: string | undefined;\n readonly id?: string | undefined;\n readonly onOpenChange?: ((open: boolean) => void) | undefined;\n}\n\nconst VIEW_KEYS = new Set([\n 'name',\n 'hiddenInput',\n 'required',\n 'disabled',\n 'theme',\n 'panelLayout',\n 'ariaLabel',\n 'timeLabel',\n 'id',\n 'onOpenChange',\n 'onChange',\n]);\n\n/** A date input and a time input sharing one panel: calendar plus hour/minute columns. */\nexport class DateTimePickerView {\n readonly store: DateTimePickerStore;\n readonly dateInput: HTMLInputElement;\n readonly timeInput: HTMLInputElement;\n private options: DateTimePickerViewOptions;\n private readonly field: HTMLDivElement;\n private readonly row: HTMLDivElement;\n private readonly dateBox: HTMLDivElement;\n private readonly timeBox: HTMLDivElement;\n private readonly toggleButton: HTMLButtonElement;\n private readonly hint: HTMLParagraphElement;\n private readonly panel: HTMLDivElement;\n private readonly segment: HTMLDivElement;\n private readonly nowButton: HTMLButtonElement;\n private readonly doneButton: HTMLButtonElement;\n private readonly hours: HTMLDivElement;\n private readonly minutes: HTMLDivElement;\n private readonly time: HTMLDivElement;\n private readonly hidden: HTMLInputElement;\n private readonly calendarView: CalendarView;\n private readonly presetList: PresetList;\n private readonly unsubscribe: () => void;\n private closePanel: (() => void) | null = null;\n private wasOpen = false;\n\n constructor(host: HTMLElement, options: DateTimePickerViewOptions = {}) {\n this.options = { ...options };\n this.store = createDateTimePicker({\n ...storeOptions(options),\n onChange: (value, detail) => {\n this.options.onChange?.(value, detail);\n },\n });\n const id = options.id ?? uid('ndp-datetime');\n this.dateInput = el('input', {\n class: 'ndp-input__control',\n id,\n type: 'text',\n inputmode: 'numeric',\n autocomplete: 'off',\n 'aria-controls': `${id}-panel`,\n });\n this.timeInput = el('input', {\n class: 'ndp-input__control',\n id: `${id}-time`,\n type: 'text',\n autocomplete: 'off',\n });\n this.toggleButton = el(\n 'button',\n { type: 'button', class: 'ndp-icon-button', 'data-action': 'toggle' },\n [icon('calendar')],\n );\n this.dateBox = el('div', { class: 'ndp-input' }, [\n this.dateInput,\n el('span', { class: 'ndp-input__actions' }, [this.toggleButton]),\n ]);\n this.timeBox = el('div', { class: 'ndp-input ndp-input--time' }, [this.timeInput]);\n this.row = el('div', { class: 'ndp-datetime' }, [this.dateBox, this.timeBox]);\n this.hint = el('p', {\n class: 'ndp-hint',\n id: `${id}-hint`,\n 'aria-live': 'polite',\n hidden: true,\n });\n this.hidden = el('input', { type: 'hidden' });\n this.segment = el('div', { class: 'ndp-segment', role: 'group' }, [\n el('button', { type: 'button', class: 'ndp-segment__item', 'data-calendar': 'BS' }),\n el('button', { type: 'button', class: 'ndp-segment__item', 'data-calendar': 'AD' }),\n ]);\n this.nowButton = el('button', {\n type: 'button',\n class: 'ndp-button',\n 'data-action': 'now',\n });\n this.doneButton = el('button', {\n type: 'button',\n class: 'ndp-button',\n 'data-variant': 'primary',\n 'data-action': 'done',\n });\n this.hours = el('div', {\n class: 'ndp-time__column',\n role: 'group',\n 'data-unit': 'hour',\n });\n this.minutes = el('div', {\n class: 'ndp-time__column',\n role: 'group',\n 'data-unit': 'minute',\n });\n this.time = el('div', { class: 'ndp-time', role: 'group' }, [\n this.hours,\n this.minutes,\n ]);\n const calendarRoot = el('div', { class: 'ndp-panel__calendar' });\n this.presetList = new PresetList((presetId) => {\n this.store.actions.applyPreset(presetId);\n });\n this.panel = el(\n 'div',\n {\n class: 'ndp-panel',\n id: `${id}-panel`,\n\n hidden: true,\n },\n [\n el('div', { class: 'ndp-panel__body' }, [\n this.presetList.element,\n calendarRoot,\n this.time,\n ]),\n el('div', { class: 'ndp-panel__footer' }, [\n this.segment,\n el('span', {}, [this.nowButton, this.doneButton]),\n ]),\n ],\n );\n this.field = el('div', { class: 'ndp-field' }, [\n this.row,\n this.hint,\n this.panel,\n this.hidden,\n ]);\n host.append(this.field);\n this.calendarView = new CalendarView(calendarRoot, this.store.calendar, {\n locale: () => this.options.locale,\n onDayActivate: (date) => {\n this.store.actions.selectDate(date);\n },\n });\n\n this.dateInput.addEventListener('input', () => {\n this.store.actions.typeDate(this.dateInput.value);\n });\n this.dateInput.addEventListener('blur', () => {\n this.store.actions.blurDate();\n });\n this.dateInput.addEventListener('keydown', (event) => {\n if (event.key === 'ArrowDown' && (event.altKey || this.dateInput.value === '')) {\n event.preventDefault();\n this.open();\n }\n });\n this.timeInput.addEventListener('input', () => {\n this.store.actions.typeTime(this.timeInput.value);\n });\n this.timeInput.addEventListener('blur', () => {\n this.store.actions.blurTime();\n });\n this.field.addEventListener('click', this.onClick);\n this.unsubscribe = this.store.subscribe(() => {\n this.render();\n });\n this.render();\n }\n\n getState(): DateTimePickerState {\n return this.store.getState();\n }\n\n setOptions(changes: Partial<DateTimePickerViewOptions>): void {\n this.options = { ...this.options, ...changes };\n const forStore = storeOptions(changes);\n if (Object.keys(forStore).length > 0) {\n this.store.setOptions(forStore);\n } else {\n this.render();\n }\n }\n\n open(): void {\n if (!this.options.disabled) {\n this.store.actions.open();\n }\n }\n\n close(): void {\n this.store.actions.close();\n }\n\n destroy(): void {\n this.closePanel?.();\n this.unsubscribe();\n this.calendarView.destroy();\n this.field.remove();\n }\n\n private render(): void {\n const state = this.store.getState();\n const locale = getLocale(this.options.locale);\n const disabled = this.options.disabled ?? false;\n const hint = state.error?.message ?? state.equivalentText;\n\n if (this.dateInput.value !== state.dateText) {\n this.dateInput.value = state.dateText;\n }\n if (this.timeInput.value !== state.timeText) {\n this.timeInput.value = state.timeText;\n }\n this.dateInput.setCustomValidity(\n state.error?.field === 'date' ? state.error.message : '',\n );\n this.timeInput.setCustomValidity(\n state.error?.field === 'time' ? state.error.message : '',\n );\n setAttrs(this.dateInput, {\n placeholder: state.placeholder,\n disabled,\n required: this.options.required ?? false,\n 'aria-label': this.options.ariaLabel ?? null,\n 'aria-invalid': state.error?.field === 'date' ? 'true' : null,\n 'aria-describedby': hint ? this.hint.id : null,\n });\n setAttrs(this.timeInput, {\n placeholder: state.timePlaceholder,\n disabled,\n 'aria-label': this.options.timeLabel ?? locale.labels.time,\n 'aria-invalid': state.error?.field === 'time' ? 'true' : null,\n 'aria-describedby': hint ? this.hint.id : null,\n });\n setAttrs(this.dateBox, {\n 'data-invalid': state.error?.field === 'date',\n 'data-disabled': disabled,\n });\n setAttrs(this.timeBox, {\n 'data-invalid': state.error?.field === 'time',\n 'data-disabled': disabled,\n });\n setAttrs(this.field, { 'data-ndp-theme': this.options.theme ?? null });\n setAttrs(this.panel, {\n 'data-ndp-theme': this.options.theme ?? null,\n 'aria-label': locale.labels.chooseDate,\n });\n setAttrs(this.toggleButton, {\n disabled,\n 'aria-label': locale.labels.openCalendar,\n 'aria-expanded': state.open ? 'true' : 'false',\n });\n this.hint.hidden = hint === null;\n setText(this.hint, hint ?? '');\n setAttrs(this.hint, { 'data-error': state.error !== null });\n\n renderSegment(this.segment, state, locale);\n setText(this.nowButton, locale.labels.now);\n setText(this.doneButton, locale.labels.done);\n setAttrs(this.time, { 'aria-label': locale.labels.time });\n setAttrs(this.hours, { 'aria-label': locale.labels.hour });\n setAttrs(this.minutes, { 'aria-label': locale.labels.minute });\n renderColumn(this.hours, state.hours);\n renderColumn(this.minutes, state.minutes);\n this.presetList.render(state.presets, locale.labels.presets);\n\n const name = this.options.hiddenInput === false ? undefined : this.options.name;\n setAttrs(this.hidden, { name: name ?? null });\n this.hidden.value = state.value;\n this.hidden.disabled = name === undefined || disabled;\n setPopupMode(state, [this.dateInput], this.toggleButton, this.panel);\n this.syncPanel(state.open && !state.inline);\n this.panel.hidden = !state.inline && !this.wasOpen;\n this.panel.style.setProperty(\n '--ndp-panel-width',\n state.inline ? `${String(this.panelWidth())}px` : null,\n );\n }\n\n private panelWidth(): number {\n return (\n (this.store.getState().presets.length > 0\n ? PANEL_WIDTH_WITH_PRESETS\n : PANEL_WIDTH) + TIME_COLUMNS_WIDTH\n );\n }\n\n private syncPanel(open: boolean): void {\n if (open === this.wasOpen) {\n return;\n }\n this.wasOpen = open;\n this.options.onOpenChange?.(open);\n if (open) {\n this.closePanel = openPanel({\n panel: this.panel,\n anchor: this.row,\n inside: [this.field],\n width: this.panelWidth(),\n layout: this.options.panelLayout,\n close: () => {\n this.store.actions.close();\n },\n returnFocus: this.dateInput,\n });\n for (const item of this.time.querySelectorAll<HTMLElement>(\n '[aria-pressed=\"true\"]',\n )) {\n if (typeof item.scrollIntoView === 'function') {\n item.scrollIntoView({ block: 'nearest' });\n }\n }\n this.calendarView.focusGrid();\n } else {\n this.closePanel?.();\n this.closePanel = null;\n }\n }\n\n private readonly onClick = (event: MouseEvent): void => {\n const target = event.target instanceof Element ? event.target : null;\n if (!target || this.calendarView.element.contains(target)) {\n return;\n }\n const item = target.closest<HTMLButtonElement>('.ndp-time-item');\n if (item) {\n const unit = item.parentElement?.dataset['unit'];\n const value = Number(item.dataset['value']);\n if (unit === 'hour') {\n this.store.actions.selectHour(value);\n } else {\n this.store.actions.selectMinute(value);\n }\n return;\n }\n const calendar = target.closest<HTMLElement>('[data-calendar]')?.dataset['calendar'];\n if (calendar === 'BS' || calendar === 'AD') {\n this.store.actions.switchCalendar(calendar);\n return;\n }\n switch (target.closest<HTMLElement>('[data-action]')?.dataset['action']) {\n case 'toggle':\n if (this.store.getState().open) {\n this.close();\n } else {\n this.open();\n }\n break;\n case 'now':\n this.store.actions.selectNow();\n break;\n case 'done':\n this.close();\n this.dateInput.focus();\n break;\n default:\n break;\n }\n };\n}\n\nfunction renderColumn(column: HTMLElement, cells: readonly TimeCell[]): void {\n if (column.children.length !== cells.length) {\n column.replaceChildren(\n ...cells.map((cell) =>\n el('button', {\n type: 'button',\n class: 'ndp-time-item',\n 'data-value': cell.value,\n }),\n ),\n );\n }\n cells.forEach((cell, index) => {\n const button = column.children[index];\n if (button) {\n setText(button, cell.label);\n setAttrs(button, {\n 'data-value': cell.value,\n 'aria-pressed': cell.isSelected ? 'true' : 'false',\n });\n }\n });\n}\n\nfunction storeOptions(\n options: Partial<DateTimePickerViewOptions>,\n): Partial<DateTimePickerOptions> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options)) {\n if (!VIEW_KEYS.has(key)) {\n out[key] = value;\n }\n }\n\n return out;\n}\n","import type { SinglePreset } from '@nepdatejs/datepicker';\nimport { DateTimePickerView, type DateTimePickerViewOptions } from './datetime-view';\nimport {\n Base,\n str,\n bool,\n calendarAttr,\n int,\n onUnlessFalse,\n panelLayout,\n theme,\n presetIds,\n swallowInnerChange,\n type RichProps,\n} from './element-utils';\n\n/**\n * <nep-date-time-picker name=\"starts-at\" minute-step=\"15\"></nep-date-time-picker>\n *\n * A form-associated BS/AD date + time field. The form receives one instant as\n * an ISO timestamp with the zone's offset (\"2026-10-18T14:30:00+05:45\").\n * Fires `change` with { value, ad, bs, time }.\n */\nexport class NepDateTimePickerElement extends Base {\n static readonly formAssociated = true;\n static readonly observedAttributes: readonly string[] = [\n 'value',\n 'min',\n 'max',\n 'calendar',\n 'default-calendar',\n 'locale',\n 'name',\n 'required',\n 'disabled',\n 'theme',\n 'panel-layout',\n 'mask',\n 'inline',\n 'time-zone',\n 'hour12',\n 'minute-step',\n 'default-time',\n 'label',\n 'time-label',\n 'presets',\n ];\n\n view: DateTimePickerView | null = null;\n private readonly internals: ElementInternals | null;\n private rich: RichProps = {};\n private unsubscribe: (() => void) | null = null;\n\n constructor() {\n super();\n this.internals =\n typeof this.attachInternals === 'function' ? this.attachInternals() : null;\n swallowInnerChange(this);\n }\n\n get value(): string {\n return this.view?.getState().value ?? '';\n }\n set value(next: string) {\n this.view?.store.actions.setValue(next);\n }\n set holidays(next: RichProps['holidays']) {\n this.rich = { ...this.rich, holidays: next };\n this.view?.setOptions({ holidays: next });\n }\n set isDateDisabled(next: RichProps['isDateDisabled']) {\n this.rich = { ...this.rich, isDateDisabled: next };\n this.view?.setOptions({ isDateDisabled: next });\n }\n\n connectedCallback(): void {\n if (this.view) {\n return;\n }\n const view = new DateTimePickerView(this, {\n ...this.readOptions(),\n defaultValue: str(this, 'value'),\n onChange: (value, detail) => {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n detail: {\n value,\n ad: detail?.ad ?? null,\n bs: detail?.bs ?? null,\n time: detail?.time ?? null,\n },\n }),\n );\n },\n onOpenChange: (open) => {\n this.dispatchEvent(\n new CustomEvent(open ? 'nep-open' : 'nep-close', { bubbles: true }),\n );\n },\n });\n this.view = view;\n this.unsubscribe = view.store.subscribe(() => {\n this.syncForm();\n });\n this.syncForm();\n }\n\n disconnectedCallback(): void {\n this.unsubscribe?.();\n this.view?.destroy();\n this.view = null;\n }\n\n attributeChangedCallback(\n name: string,\n previous: string | null,\n next: string | null,\n ): void {\n if (!this.view || previous === next) {\n return;\n }\n if (name === 'value') {\n this.view.store.actions.setValue(next ?? '');\n }\n this.view.setOptions(this.readOptions());\n this.syncForm();\n }\n\n formResetCallback(): void {\n this.view?.store.actions.reset();\n }\n\n formDisabledCallback(disabled: boolean): void {\n this.view?.setOptions({ disabled: disabled || bool(this, 'disabled') });\n }\n\n override focus(options?: FocusOptions): void {\n this.view?.dateInput.focus(options);\n }\n\n private readOptions(): DateTimePickerViewOptions {\n return {\n ...this.rich,\n min: str(this, 'min'),\n max: str(this, 'max'),\n calendar: calendarAttr(this, 'calendar'),\n defaultCalendar: calendarAttr(this, 'default-calendar'),\n locale: str(this, 'locale'),\n name: str(this, 'name'),\n hiddenInput: this.internals === null,\n required: bool(this, 'required'),\n disabled: bool(this, 'disabled'),\n theme: theme(this),\n panelLayout: panelLayout(this),\n mask: onUnlessFalse(this, 'mask'),\n inline: this.hasAttribute('inline'),\n timeZone: str(this, 'time-zone'),\n hour12: bool(this, 'hour12'),\n minuteStep: int(this, 'minute-step'),\n defaultTime: str(this, 'default-time'),\n ariaLabel: str(this, 'label'),\n timeLabel: str(this, 'time-label'),\n presets: presetIds(this) as readonly SinglePreset[] | undefined,\n };\n }\n\n private syncForm(): void {\n const view = this.view;\n if (!view || !this.internals) {\n return;\n }\n const state = view.getState();\n this.internals.setFormValue(state.value === '' ? null : state.value);\n if (state.error) {\n this.internals.setValidity(\n { customError: true },\n state.error.message,\n state.error.field === 'time' ? view.timeInput : view.dateInput,\n );\n } else if (bool(this, 'required') && state.value === '') {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please choose a date and time.',\n view.dateInput,\n );\n } else {\n this.internals.setValidity({});\n }\n }\n}\n","/** `@nepdatejs/vanilla/date-time-picker`: just the date + time picker. */\nimport { NepDateTimePickerElement } from './date-time-picker-element';\nimport { DateTimePickerView, type DateTimePickerViewOptions } from './datetime-view';\nimport { defineElement, ELEMENT_NAMES } from './registry';\n\nexport { NepDateTimePickerElement };\nexport { DateTimePickerView, type DateTimePickerViewOptions } from './datetime-view';\n\n/** Register <nep-date-time-picker> (skipped if already defined). */\nexport function defineDateTimePicker(registry?: CustomElementRegistry): void {\n defineElement(ELEMENT_NAMES.dateTimePicker, NepDateTimePickerElement, registry);\n}\n\n/** Mount a date + time picker into a container. */\nexport function createDateTimePicker(\n container: HTMLElement,\n options: DateTimePickerViewOptions = {},\n): DateTimePickerView {\n return new DateTimePickerView(container, options);\n}\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { _ as icon, a as calendarAttr, b as setText, c as onUnlessFalse, d as str, f as swallowInnerChange, g as el, h as CalendarView, i as bool, l as panelLayout, n as defineElement, o as int, p as theme, r as Base, t as ELEMENT_NAMES, u as presetIds, v as setAttrs, x as uid, y as setPopupMode } from "./registry-BvkGnkvV.js";
2
- import { t as PresetList } from "./preset-list-CASwnwmS.js";
2
+ import { n as openPanel, r as renderSegment, t as PresetList } from "./preset-list-DmE6fJjr.js";
3
3
  import { getLocale } from "@nepdatejs/core";
4
4
  import { createDateTimePicker } from "@nepdatejs/datepicker";
5
- import { onBackdropPointer, onEscape, onOutsidePointer, restoreFocus, trackPosition } from "@nepdatejs/dom";
6
5
  //#region src/datetime-view.ts
7
6
  const VIEW_KEYS = /* @__PURE__ */ new Set([
8
7
  "name",
@@ -244,13 +243,7 @@ var DateTimePickerView = class {
244
243
  this.hint.hidden = hint === null;
245
244
  setText(this.hint, hint ?? "");
246
245
  setAttrs(this.hint, { "data-error": state.error !== null });
247
- this.segment.hidden = !state.canSwitchCalendar;
248
- setAttrs(this.segment, { "aria-label": locale.labels.calendar });
249
- for (const button of this.segment.querySelectorAll("button")) {
250
- const calendar = button.dataset["calendar"];
251
- setText(button, locale.calendarNames[calendar]);
252
- setAttrs(button, { "aria-pressed": calendar === state.calendar ? "true" : "false" });
253
- }
246
+ renderSegment(this.segment, state, locale);
254
247
  setText(this.nowButton, locale.labels.now);
255
248
  setText(this.doneButton, locale.labels.done);
256
249
  setAttrs(this.time, { "aria-label": locale.labels.time });
@@ -276,28 +269,17 @@ var DateTimePickerView = class {
276
269
  this.wasOpen = open;
277
270
  this.options.onOpenChange?.(open);
278
271
  if (open) {
279
- this.panel.hidden = false;
280
- const stopTracking = trackPosition(this.row, this.panel, {
272
+ this.closePanel = openPanel({
273
+ panel: this.panel,
274
+ anchor: this.row,
275
+ inside: [this.field],
281
276
  width: this.panelWidth(),
282
- layout: this.options.panelLayout
283
- });
284
- const stopOutside = onOutsidePointer([this.field], () => {
285
- this.store.actions.close();
286
- });
287
- const stopBackdrop = onBackdropPointer(this.panel, () => {
288
- this.store.actions.close();
289
- });
290
- const stopEscape = onEscape(() => {
291
- this.store.actions.close();
292
- restoreFocus(this.dateInput);
277
+ layout: this.options.panelLayout,
278
+ close: () => {
279
+ this.store.actions.close();
280
+ },
281
+ returnFocus: this.dateInput
293
282
  });
294
- this.closePanel = () => {
295
- stopTracking();
296
- stopOutside();
297
- stopBackdrop();
298
- stopEscape();
299
- this.panel.hidden = true;
300
- };
301
283
  for (const item of this.time.querySelectorAll("[aria-pressed=\"true\"]")) if (typeof item.scrollIntoView === "function") item.scrollIntoView({ block: "nearest" });
302
284
  this.calendarView.focusGrid();
303
285
  } else {
@@ -484,4 +466,4 @@ function createDateTimePicker$1(container, options = {}) {
484
466
  //#endregion
485
467
  export { DateTimePickerView as i, defineDateTimePicker as n, NepDateTimePickerElement as r, createDateTimePicker$1 as t };
486
468
 
487
- //# sourceMappingURL=date-time-picker-BqweOP2u.js.map
469
+ //# sourceMappingURL=date-time-picker-CxqC95aM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-time-picker-CxqC95aM.js","names":["createDateTimePicker"],"sources":["../src/datetime-view.ts","../src/date-time-picker-element.ts","../src/date-time-picker.ts"],"sourcesContent":["import { getLocale } from '@nepdatejs/core';\nimport {\n createDateTimePicker,\n type DateTimePickerOptions,\n type DateTimePickerState,\n type DateTimePickerStore,\n type TimeCell,\n} from '@nepdatejs/datepicker';\nimport type { PanelLayout } from '@nepdatejs/dom';\nimport { CalendarView } from './calendar-view';\nimport { openPanel, renderSegment } from './panel';\nimport { el, icon, setAttrs, setPopupMode, setText, uid } from './dom';\nimport type { Theme } from './picker-view';\nimport {\n PANEL_WIDTH,\n PANEL_WIDTH_WITH_PRESETS,\n PresetList,\n TIME_COLUMNS_WIDTH,\n} from './preset-list';\n\nexport interface DateTimePickerViewOptions extends DateTimePickerOptions {\n readonly name?: string | undefined;\n readonly hiddenInput?: boolean | undefined;\n readonly required?: boolean | undefined;\n readonly disabled?: boolean | undefined;\n /** 'sheet' opens a bottom sheet; 'popover' sits beside the field; 'auto' (default) uses the sheet below 480px. */\n readonly panelLayout?: PanelLayout | undefined;\n readonly theme?: Theme | undefined;\n readonly ariaLabel?: string | undefined;\n readonly timeLabel?: string | undefined;\n readonly id?: string | undefined;\n readonly onOpenChange?: ((open: boolean) => void) | undefined;\n}\n\nconst VIEW_KEYS = new Set([\n 'name',\n 'hiddenInput',\n 'required',\n 'disabled',\n 'theme',\n 'panelLayout',\n 'ariaLabel',\n 'timeLabel',\n 'id',\n 'onOpenChange',\n 'onChange',\n]);\n\n/** A date input and a time input sharing one panel: calendar plus hour/minute columns. */\nexport class DateTimePickerView {\n readonly store: DateTimePickerStore;\n readonly dateInput: HTMLInputElement;\n readonly timeInput: HTMLInputElement;\n private options: DateTimePickerViewOptions;\n private readonly field: HTMLDivElement;\n private readonly row: HTMLDivElement;\n private readonly dateBox: HTMLDivElement;\n private readonly timeBox: HTMLDivElement;\n private readonly toggleButton: HTMLButtonElement;\n private readonly hint: HTMLParagraphElement;\n private readonly panel: HTMLDivElement;\n private readonly segment: HTMLDivElement;\n private readonly nowButton: HTMLButtonElement;\n private readonly doneButton: HTMLButtonElement;\n private readonly hours: HTMLDivElement;\n private readonly minutes: HTMLDivElement;\n private readonly time: HTMLDivElement;\n private readonly hidden: HTMLInputElement;\n private readonly calendarView: CalendarView;\n private readonly presetList: PresetList;\n private readonly unsubscribe: () => void;\n private closePanel: (() => void) | null = null;\n private wasOpen = false;\n\n constructor(host: HTMLElement, options: DateTimePickerViewOptions = {}) {\n this.options = { ...options };\n this.store = createDateTimePicker({\n ...storeOptions(options),\n onChange: (value, detail) => {\n this.options.onChange?.(value, detail);\n },\n });\n const id = options.id ?? uid('ndp-datetime');\n this.dateInput = el('input', {\n class: 'ndp-input__control',\n id,\n type: 'text',\n inputmode: 'numeric',\n autocomplete: 'off',\n 'aria-controls': `${id}-panel`,\n });\n this.timeInput = el('input', {\n class: 'ndp-input__control',\n id: `${id}-time`,\n type: 'text',\n autocomplete: 'off',\n });\n this.toggleButton = el(\n 'button',\n { type: 'button', class: 'ndp-icon-button', 'data-action': 'toggle' },\n [icon('calendar')],\n );\n this.dateBox = el('div', { class: 'ndp-input' }, [\n this.dateInput,\n el('span', { class: 'ndp-input__actions' }, [this.toggleButton]),\n ]);\n this.timeBox = el('div', { class: 'ndp-input ndp-input--time' }, [this.timeInput]);\n this.row = el('div', { class: 'ndp-datetime' }, [this.dateBox, this.timeBox]);\n this.hint = el('p', {\n class: 'ndp-hint',\n id: `${id}-hint`,\n 'aria-live': 'polite',\n hidden: true,\n });\n this.hidden = el('input', { type: 'hidden' });\n this.segment = el('div', { class: 'ndp-segment', role: 'group' }, [\n el('button', { type: 'button', class: 'ndp-segment__item', 'data-calendar': 'BS' }),\n el('button', { type: 'button', class: 'ndp-segment__item', 'data-calendar': 'AD' }),\n ]);\n this.nowButton = el('button', {\n type: 'button',\n class: 'ndp-button',\n 'data-action': 'now',\n });\n this.doneButton = el('button', {\n type: 'button',\n class: 'ndp-button',\n 'data-variant': 'primary',\n 'data-action': 'done',\n });\n this.hours = el('div', {\n class: 'ndp-time__column',\n role: 'group',\n 'data-unit': 'hour',\n });\n this.minutes = el('div', {\n class: 'ndp-time__column',\n role: 'group',\n 'data-unit': 'minute',\n });\n this.time = el('div', { class: 'ndp-time', role: 'group' }, [\n this.hours,\n this.minutes,\n ]);\n const calendarRoot = el('div', { class: 'ndp-panel__calendar' });\n this.presetList = new PresetList((presetId) => {\n this.store.actions.applyPreset(presetId);\n });\n this.panel = el(\n 'div',\n {\n class: 'ndp-panel',\n id: `${id}-panel`,\n\n hidden: true,\n },\n [\n el('div', { class: 'ndp-panel__body' }, [\n this.presetList.element,\n calendarRoot,\n this.time,\n ]),\n el('div', { class: 'ndp-panel__footer' }, [\n this.segment,\n el('span', {}, [this.nowButton, this.doneButton]),\n ]),\n ],\n );\n this.field = el('div', { class: 'ndp-field' }, [\n this.row,\n this.hint,\n this.panel,\n this.hidden,\n ]);\n host.append(this.field);\n this.calendarView = new CalendarView(calendarRoot, this.store.calendar, {\n locale: () => this.options.locale,\n onDayActivate: (date) => {\n this.store.actions.selectDate(date);\n },\n });\n\n this.dateInput.addEventListener('input', () => {\n this.store.actions.typeDate(this.dateInput.value);\n });\n this.dateInput.addEventListener('blur', () => {\n this.store.actions.blurDate();\n });\n this.dateInput.addEventListener('keydown', (event) => {\n if (event.key === 'ArrowDown' && (event.altKey || this.dateInput.value === '')) {\n event.preventDefault();\n this.open();\n }\n });\n this.timeInput.addEventListener('input', () => {\n this.store.actions.typeTime(this.timeInput.value);\n });\n this.timeInput.addEventListener('blur', () => {\n this.store.actions.blurTime();\n });\n this.field.addEventListener('click', this.onClick);\n this.unsubscribe = this.store.subscribe(() => {\n this.render();\n });\n this.render();\n }\n\n getState(): DateTimePickerState {\n return this.store.getState();\n }\n\n setOptions(changes: Partial<DateTimePickerViewOptions>): void {\n this.options = { ...this.options, ...changes };\n const forStore = storeOptions(changes);\n if (Object.keys(forStore).length > 0) {\n this.store.setOptions(forStore);\n } else {\n this.render();\n }\n }\n\n open(): void {\n if (!this.options.disabled) {\n this.store.actions.open();\n }\n }\n\n close(): void {\n this.store.actions.close();\n }\n\n destroy(): void {\n this.closePanel?.();\n this.unsubscribe();\n this.calendarView.destroy();\n this.field.remove();\n }\n\n private render(): void {\n const state = this.store.getState();\n const locale = getLocale(this.options.locale);\n const disabled = this.options.disabled ?? false;\n const hint = state.error?.message ?? state.equivalentText;\n\n if (this.dateInput.value !== state.dateText) {\n this.dateInput.value = state.dateText;\n }\n if (this.timeInput.value !== state.timeText) {\n this.timeInput.value = state.timeText;\n }\n this.dateInput.setCustomValidity(\n state.error?.field === 'date' ? state.error.message : '',\n );\n this.timeInput.setCustomValidity(\n state.error?.field === 'time' ? state.error.message : '',\n );\n setAttrs(this.dateInput, {\n placeholder: state.placeholder,\n disabled,\n required: this.options.required ?? false,\n 'aria-label': this.options.ariaLabel ?? null,\n 'aria-invalid': state.error?.field === 'date' ? 'true' : null,\n 'aria-describedby': hint ? this.hint.id : null,\n });\n setAttrs(this.timeInput, {\n placeholder: state.timePlaceholder,\n disabled,\n 'aria-label': this.options.timeLabel ?? locale.labels.time,\n 'aria-invalid': state.error?.field === 'time' ? 'true' : null,\n 'aria-describedby': hint ? this.hint.id : null,\n });\n setAttrs(this.dateBox, {\n 'data-invalid': state.error?.field === 'date',\n 'data-disabled': disabled,\n });\n setAttrs(this.timeBox, {\n 'data-invalid': state.error?.field === 'time',\n 'data-disabled': disabled,\n });\n setAttrs(this.field, { 'data-ndp-theme': this.options.theme ?? null });\n setAttrs(this.panel, {\n 'data-ndp-theme': this.options.theme ?? null,\n 'aria-label': locale.labels.chooseDate,\n });\n setAttrs(this.toggleButton, {\n disabled,\n 'aria-label': locale.labels.openCalendar,\n 'aria-expanded': state.open ? 'true' : 'false',\n });\n this.hint.hidden = hint === null;\n setText(this.hint, hint ?? '');\n setAttrs(this.hint, { 'data-error': state.error !== null });\n\n renderSegment(this.segment, state, locale);\n setText(this.nowButton, locale.labels.now);\n setText(this.doneButton, locale.labels.done);\n setAttrs(this.time, { 'aria-label': locale.labels.time });\n setAttrs(this.hours, { 'aria-label': locale.labels.hour });\n setAttrs(this.minutes, { 'aria-label': locale.labels.minute });\n renderColumn(this.hours, state.hours);\n renderColumn(this.minutes, state.minutes);\n this.presetList.render(state.presets, locale.labels.presets);\n\n const name = this.options.hiddenInput === false ? undefined : this.options.name;\n setAttrs(this.hidden, { name: name ?? null });\n this.hidden.value = state.value;\n this.hidden.disabled = name === undefined || disabled;\n setPopupMode(state, [this.dateInput], this.toggleButton, this.panel);\n this.syncPanel(state.open && !state.inline);\n this.panel.hidden = !state.inline && !this.wasOpen;\n this.panel.style.setProperty(\n '--ndp-panel-width',\n state.inline ? `${String(this.panelWidth())}px` : null,\n );\n }\n\n private panelWidth(): number {\n return (\n (this.store.getState().presets.length > 0\n ? PANEL_WIDTH_WITH_PRESETS\n : PANEL_WIDTH) + TIME_COLUMNS_WIDTH\n );\n }\n\n private syncPanel(open: boolean): void {\n if (open === this.wasOpen) {\n return;\n }\n this.wasOpen = open;\n this.options.onOpenChange?.(open);\n if (open) {\n this.closePanel = openPanel({\n panel: this.panel,\n anchor: this.row,\n inside: [this.field],\n width: this.panelWidth(),\n layout: this.options.panelLayout,\n close: () => {\n this.store.actions.close();\n },\n returnFocus: this.dateInput,\n });\n for (const item of this.time.querySelectorAll<HTMLElement>(\n '[aria-pressed=\"true\"]',\n )) {\n if (typeof item.scrollIntoView === 'function') {\n item.scrollIntoView({ block: 'nearest' });\n }\n }\n this.calendarView.focusGrid();\n } else {\n this.closePanel?.();\n this.closePanel = null;\n }\n }\n\n private readonly onClick = (event: MouseEvent): void => {\n const target = event.target instanceof Element ? event.target : null;\n if (!target || this.calendarView.element.contains(target)) {\n return;\n }\n const item = target.closest<HTMLButtonElement>('.ndp-time-item');\n if (item) {\n const unit = item.parentElement?.dataset['unit'];\n const value = Number(item.dataset['value']);\n if (unit === 'hour') {\n this.store.actions.selectHour(value);\n } else {\n this.store.actions.selectMinute(value);\n }\n return;\n }\n const calendar = target.closest<HTMLElement>('[data-calendar]')?.dataset['calendar'];\n if (calendar === 'BS' || calendar === 'AD') {\n this.store.actions.switchCalendar(calendar);\n return;\n }\n switch (target.closest<HTMLElement>('[data-action]')?.dataset['action']) {\n case 'toggle':\n if (this.store.getState().open) {\n this.close();\n } else {\n this.open();\n }\n break;\n case 'now':\n this.store.actions.selectNow();\n break;\n case 'done':\n this.close();\n this.dateInput.focus();\n break;\n default:\n break;\n }\n };\n}\n\nfunction renderColumn(column: HTMLElement, cells: readonly TimeCell[]): void {\n if (column.children.length !== cells.length) {\n column.replaceChildren(\n ...cells.map((cell) =>\n el('button', {\n type: 'button',\n class: 'ndp-time-item',\n 'data-value': cell.value,\n }),\n ),\n );\n }\n cells.forEach((cell, index) => {\n const button = column.children[index];\n if (button) {\n setText(button, cell.label);\n setAttrs(button, {\n 'data-value': cell.value,\n 'aria-pressed': cell.isSelected ? 'true' : 'false',\n });\n }\n });\n}\n\nfunction storeOptions(\n options: Partial<DateTimePickerViewOptions>,\n): Partial<DateTimePickerOptions> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options)) {\n if (!VIEW_KEYS.has(key)) {\n out[key] = value;\n }\n }\n\n return out;\n}\n","import type { SinglePreset } from '@nepdatejs/datepicker';\nimport { DateTimePickerView, type DateTimePickerViewOptions } from './datetime-view';\nimport {\n Base,\n str,\n bool,\n calendarAttr,\n int,\n onUnlessFalse,\n panelLayout,\n theme,\n presetIds,\n swallowInnerChange,\n type RichProps,\n} from './element-utils';\n\n/**\n * <nep-date-time-picker name=\"starts-at\" minute-step=\"15\"></nep-date-time-picker>\n *\n * A form-associated BS/AD date + time field. The form receives one instant as\n * an ISO timestamp with the zone's offset (\"2026-10-18T14:30:00+05:45\").\n * Fires `change` with { value, ad, bs, time }.\n */\nexport class NepDateTimePickerElement extends Base {\n static readonly formAssociated = true;\n static readonly observedAttributes: readonly string[] = [\n 'value',\n 'min',\n 'max',\n 'calendar',\n 'default-calendar',\n 'locale',\n 'name',\n 'required',\n 'disabled',\n 'theme',\n 'panel-layout',\n 'mask',\n 'inline',\n 'time-zone',\n 'hour12',\n 'minute-step',\n 'default-time',\n 'label',\n 'time-label',\n 'presets',\n ];\n\n view: DateTimePickerView | null = null;\n private readonly internals: ElementInternals | null;\n private rich: RichProps = {};\n private unsubscribe: (() => void) | null = null;\n\n constructor() {\n super();\n this.internals =\n typeof this.attachInternals === 'function' ? this.attachInternals() : null;\n swallowInnerChange(this);\n }\n\n get value(): string {\n return this.view?.getState().value ?? '';\n }\n set value(next: string) {\n this.view?.store.actions.setValue(next);\n }\n set holidays(next: RichProps['holidays']) {\n this.rich = { ...this.rich, holidays: next };\n this.view?.setOptions({ holidays: next });\n }\n set isDateDisabled(next: RichProps['isDateDisabled']) {\n this.rich = { ...this.rich, isDateDisabled: next };\n this.view?.setOptions({ isDateDisabled: next });\n }\n\n connectedCallback(): void {\n if (this.view) {\n return;\n }\n const view = new DateTimePickerView(this, {\n ...this.readOptions(),\n defaultValue: str(this, 'value'),\n onChange: (value, detail) => {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n detail: {\n value,\n ad: detail?.ad ?? null,\n bs: detail?.bs ?? null,\n time: detail?.time ?? null,\n },\n }),\n );\n },\n onOpenChange: (open) => {\n this.dispatchEvent(\n new CustomEvent(open ? 'nep-open' : 'nep-close', { bubbles: true }),\n );\n },\n });\n this.view = view;\n this.unsubscribe = view.store.subscribe(() => {\n this.syncForm();\n });\n this.syncForm();\n }\n\n disconnectedCallback(): void {\n this.unsubscribe?.();\n this.view?.destroy();\n this.view = null;\n }\n\n attributeChangedCallback(\n name: string,\n previous: string | null,\n next: string | null,\n ): void {\n if (!this.view || previous === next) {\n return;\n }\n if (name === 'value') {\n this.view.store.actions.setValue(next ?? '');\n }\n this.view.setOptions(this.readOptions());\n this.syncForm();\n }\n\n formResetCallback(): void {\n this.view?.store.actions.reset();\n }\n\n formDisabledCallback(disabled: boolean): void {\n this.view?.setOptions({ disabled: disabled || bool(this, 'disabled') });\n }\n\n override focus(options?: FocusOptions): void {\n this.view?.dateInput.focus(options);\n }\n\n private readOptions(): DateTimePickerViewOptions {\n return {\n ...this.rich,\n min: str(this, 'min'),\n max: str(this, 'max'),\n calendar: calendarAttr(this, 'calendar'),\n defaultCalendar: calendarAttr(this, 'default-calendar'),\n locale: str(this, 'locale'),\n name: str(this, 'name'),\n hiddenInput: this.internals === null,\n required: bool(this, 'required'),\n disabled: bool(this, 'disabled'),\n theme: theme(this),\n panelLayout: panelLayout(this),\n mask: onUnlessFalse(this, 'mask'),\n inline: this.hasAttribute('inline'),\n timeZone: str(this, 'time-zone'),\n hour12: bool(this, 'hour12'),\n minuteStep: int(this, 'minute-step'),\n defaultTime: str(this, 'default-time'),\n ariaLabel: str(this, 'label'),\n timeLabel: str(this, 'time-label'),\n presets: presetIds(this) as readonly SinglePreset[] | undefined,\n };\n }\n\n private syncForm(): void {\n const view = this.view;\n if (!view || !this.internals) {\n return;\n }\n const state = view.getState();\n this.internals.setFormValue(state.value === '' ? null : state.value);\n if (state.error) {\n this.internals.setValidity(\n { customError: true },\n state.error.message,\n state.error.field === 'time' ? view.timeInput : view.dateInput,\n );\n } else if (bool(this, 'required') && state.value === '') {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please choose a date and time.',\n view.dateInput,\n );\n } else {\n this.internals.setValidity({});\n }\n }\n}\n","/** `@nepdatejs/vanilla/date-time-picker`: just the date + time picker. */\nimport { NepDateTimePickerElement } from './date-time-picker-element';\nimport { DateTimePickerView, type DateTimePickerViewOptions } from './datetime-view';\nimport { defineElement, ELEMENT_NAMES } from './registry';\n\nexport { NepDateTimePickerElement };\nexport { DateTimePickerView, type DateTimePickerViewOptions } from './datetime-view';\n\n/** Register <nep-date-time-picker> (skipped if already defined). */\nexport function defineDateTimePicker(registry?: CustomElementRegistry): void {\n defineElement(ELEMENT_NAMES.dateTimePicker, NepDateTimePickerElement, registry);\n}\n\n/** Mount a date + time picker into a container. */\nexport function createDateTimePicker(\n container: HTMLElement,\n options: DateTimePickerViewOptions = {},\n): DateTimePickerView {\n return new DateTimePickerView(container, options);\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_date_time_picker = require("./date-time-picker-Bxfn-a9T.cjs");
2
+ const require_date_time_picker = require("./date-time-picker-ChHIBTBw.cjs");
3
3
  exports.DateTimePickerView = require_date_time_picker.DateTimePickerView;
4
4
  exports.NepDateTimePickerElement = require_date_time_picker.NepDateTimePickerElement;
5
5
  exports.createDateTimePicker = require_date_time_picker.createDateTimePicker;
@@ -1 +1 @@
1
- export { i as DateTimePickerView, r as NepDateTimePickerElement, t as createDateTimePicker, n as defineDateTimePicker } from "./date-time-picker-BqweOP2u.js";
1
+ export { i as DateTimePickerView, r as NepDateTimePickerElement, t as createDateTimePicker, n as defineDateTimePicker } from "./date-time-picker-CxqC95aM.js";
@@ -1,8 +1,8 @@
1
- const require_date_picker = require("./date-picker-CQoabjlj.cjs");
1
+ const require_date_picker = require("./date-picker-CgjYsf1w.cjs");
2
2
  const require_calendar = require("./calendar-C1LZI7XN.cjs");
3
- const require_date_range_picker = require("./date-range-picker-BQKcZeqG.cjs");
4
- const require_date_time_picker = require("./date-time-picker-Bxfn-a9T.cjs");
5
- const require_multi_date_picker = require("./multi-date-picker-BMEYUPBa.cjs");
3
+ const require_date_range_picker = require("./date-range-picker-VrQZFZED.cjs");
4
+ const require_date_time_picker = require("./date-time-picker-ChHIBTBw.cjs");
5
+ const require_multi_date_picker = require("./multi-date-picker-DUyuO-nH.cjs");
6
6
  //#region src/define.ts
7
7
  /** Register all five custom elements (skips any already defined). Safe to call more than once. */
8
8
  function defineElements(registry) {
@@ -20,4 +20,4 @@ Object.defineProperty(exports, "defineElements", {
20
20
  }
21
21
  });
22
22
 
23
- //# sourceMappingURL=define-DTTdLfIM.cjs.map
23
+ //# sourceMappingURL=define-BbTIFHtH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-DTTdLfIM.cjs","names":[],"sources":["../src/define.ts"],"sourcesContent":["import { defineCalendar } from './calendar';\nimport { defineDatePicker } from './date-picker';\nimport { defineDateRangePicker } from './date-range-picker';\nimport { defineDateTimePicker } from './date-time-picker';\nimport { defineMultiDatePicker } from './multi-date-picker';\n\nexport { ELEMENT_NAMES } from './registry';\n\n/** Register all five custom elements (skips any already defined). Safe to call more than once. */\nexport function defineElements(registry?: CustomElementRegistry): void {\n defineDatePicker(registry);\n defineCalendar(registry);\n defineDateRangePicker(registry);\n defineDateTimePicker(registry);\n defineMultiDatePicker(registry);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,eAAe,UAAwC;CACrE,oBAAA,iBAAiB,QAAQ;CACzB,iBAAA,eAAe,QAAQ;CACvB,0BAAA,sBAAsB,QAAQ;CAC9B,yBAAA,qBAAqB,QAAQ;CAC7B,0BAAA,sBAAsB,QAAQ;AAChC"}
1
+ {"version":3,"file":"define-BbTIFHtH.cjs","names":[],"sources":["../src/define.ts"],"sourcesContent":["import { defineCalendar } from './calendar';\nimport { defineDatePicker } from './date-picker';\nimport { defineDateRangePicker } from './date-range-picker';\nimport { defineDateTimePicker } from './date-time-picker';\nimport { defineMultiDatePicker } from './multi-date-picker';\n\nexport { ELEMENT_NAMES } from './registry';\n\n/** Register all five custom elements (skips any already defined). Safe to call more than once. */\nexport function defineElements(registry?: CustomElementRegistry): void {\n defineDatePicker(registry);\n defineCalendar(registry);\n defineDateRangePicker(registry);\n defineDateTimePicker(registry);\n defineMultiDatePicker(registry);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,eAAe,UAAwC;CACrE,oBAAA,iBAAiB,QAAQ;CACzB,iBAAA,eAAe,QAAQ;CACvB,0BAAA,sBAAsB,QAAQ;CAC9B,yBAAA,qBAAqB,QAAQ;CAC7B,0BAAA,sBAAsB,QAAQ;AAChC"}
@@ -1,8 +1,8 @@
1
- import { n as defineDatePicker } from "./date-picker-ucoEFnMW.js";
1
+ import { n as defineDatePicker } from "./date-picker-BwlrlU5Y.js";
2
2
  import { n as defineCalendar } from "./calendar-BAcO-jYq.js";
3
- import { n as defineDateRangePicker } from "./date-range-picker-DAkCzVgT.js";
4
- import { n as defineDateTimePicker } from "./date-time-picker-BqweOP2u.js";
5
- import { n as defineMultiDatePicker } from "./multi-date-picker-XCg8Y0sF.js";
3
+ import { n as defineDateRangePicker } from "./date-range-picker-NwetXUC-.js";
4
+ import { n as defineDateTimePicker } from "./date-time-picker-CxqC95aM.js";
5
+ import { n as defineMultiDatePicker } from "./multi-date-picker-C3Lr0Dq-.js";
6
6
  //#region src/define.ts
7
7
  /** Register all five custom elements (skips any already defined). Safe to call more than once. */
8
8
  function defineElements(registry) {
@@ -15,4 +15,4 @@ function defineElements(registry) {
15
15
  //#endregion
16
16
  export { defineElements as t };
17
17
 
18
- //# sourceMappingURL=define-7natoEH4.js.map
18
+ //# sourceMappingURL=define-D96w8Zu2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-7natoEH4.js","names":[],"sources":["../src/define.ts"],"sourcesContent":["import { defineCalendar } from './calendar';\nimport { defineDatePicker } from './date-picker';\nimport { defineDateRangePicker } from './date-range-picker';\nimport { defineDateTimePicker } from './date-time-picker';\nimport { defineMultiDatePicker } from './multi-date-picker';\n\nexport { ELEMENT_NAMES } from './registry';\n\n/** Register all five custom elements (skips any already defined). Safe to call more than once. */\nexport function defineElements(registry?: CustomElementRegistry): void {\n defineDatePicker(registry);\n defineCalendar(registry);\n defineDateRangePicker(registry);\n defineDateTimePicker(registry);\n defineMultiDatePicker(registry);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,eAAe,UAAwC;CACrE,iBAAiB,QAAQ;CACzB,eAAe,QAAQ;CACvB,sBAAsB,QAAQ;CAC9B,qBAAqB,QAAQ;CAC7B,sBAAsB,QAAQ;AAChC"}
1
+ {"version":3,"file":"define-D96w8Zu2.js","names":[],"sources":["../src/define.ts"],"sourcesContent":["import { defineCalendar } from './calendar';\nimport { defineDatePicker } from './date-picker';\nimport { defineDateRangePicker } from './date-range-picker';\nimport { defineDateTimePicker } from './date-time-picker';\nimport { defineMultiDatePicker } from './multi-date-picker';\n\nexport { ELEMENT_NAMES } from './registry';\n\n/** Register all five custom elements (skips any already defined). Safe to call more than once. */\nexport function defineElements(registry?: CustomElementRegistry): void {\n defineDatePicker(registry);\n defineCalendar(registry);\n defineDateRangePicker(registry);\n defineDateTimePicker(registry);\n defineMultiDatePicker(registry);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,eAAe,UAAwC;CACrE,iBAAiB,QAAQ;CACzB,eAAe,QAAQ;CACvB,sBAAsB,QAAQ;CAC9B,qBAAqB,QAAQ;CAC7B,sBAAsB,QAAQ;AAChC"}
package/dist/index.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_registry = require("./registry-3qzdVB7H.cjs");
3
- const require_date_picker = require("./date-picker-CQoabjlj.cjs");
3
+ const require_date_picker = require("./date-picker-CgjYsf1w.cjs");
4
4
  const require_calendar = require("./calendar-C1LZI7XN.cjs");
5
- const require_date_range_picker = require("./date-range-picker-BQKcZeqG.cjs");
6
- const require_date_time_picker = require("./date-time-picker-Bxfn-a9T.cjs");
7
- const require_multi_date_picker = require("./multi-date-picker-BMEYUPBa.cjs");
8
- const require_define = require("./define-DTTdLfIM.cjs");
5
+ const require_date_range_picker = require("./date-range-picker-VrQZFZED.cjs");
6
+ const require_date_time_picker = require("./date-time-picker-ChHIBTBw.cjs");
7
+ const require_multi_date_picker = require("./multi-date-picker-DUyuO-nH.cjs");
8
+ const require_define = require("./define-BbTIFHtH.cjs");
9
9
  exports.CalendarView = require_registry.CalendarView;
10
10
  exports.DatePickerView = require_date_picker.DatePickerView;
11
11
  exports.DateRangePickerView = require_date_range_picker.DateRangePickerView;
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { h as CalendarView, t as ELEMENT_NAMES } from "./registry-BvkGnkvV.js";
2
- import { i as DatePickerView, n as defineDatePicker, r as NepDatePickerElement, t as createDatePicker } from "./date-picker-ucoEFnMW.js";
2
+ import { i as DatePickerView, n as defineDatePicker, r as NepDatePickerElement, t as createDatePicker } from "./date-picker-BwlrlU5Y.js";
3
3
  import { n as defineCalendar, r as NepCalendarElement, t as createCalendar } from "./calendar-BAcO-jYq.js";
4
- import { i as DateRangePickerView, n as defineDateRangePicker, r as NepDateRangePickerElement, t as createDateRangePicker } from "./date-range-picker-DAkCzVgT.js";
5
- import { i as DateTimePickerView, n as defineDateTimePicker, r as NepDateTimePickerElement, t as createDateTimePicker } from "./date-time-picker-BqweOP2u.js";
6
- import { i as MultiDatePickerView, n as defineMultiDatePicker, r as NepMultiDatePickerElement, t as createMultiDatePicker } from "./multi-date-picker-XCg8Y0sF.js";
7
- import { t as defineElements } from "./define-7natoEH4.js";
4
+ import { i as DateRangePickerView, n as defineDateRangePicker, r as NepDateRangePickerElement, t as createDateRangePicker } from "./date-range-picker-NwetXUC-.js";
5
+ import { i as DateTimePickerView, n as defineDateTimePicker, r as NepDateTimePickerElement, t as createDateTimePicker } from "./date-time-picker-CxqC95aM.js";
6
+ import { i as MultiDatePickerView, n as defineMultiDatePicker, r as NepMultiDatePickerElement, t as createMultiDatePicker } from "./multi-date-picker-C3Lr0Dq-.js";
7
+ import { t as defineElements } from "./define-D96w8Zu2.js";
8
8
  export { CalendarView, DatePickerView, DateRangePickerView, DateTimePickerView, ELEMENT_NAMES, MultiDatePickerView, NepCalendarElement, NepDatePickerElement, NepDateRangePickerElement, NepDateTimePickerElement, NepMultiDatePickerElement, createCalendar, createDatePicker, createDateRangePicker, createDateTimePicker, createMultiDatePicker, defineCalendar, defineDatePicker, defineDateRangePicker, defineDateTimePicker, defineElements, defineMultiDatePicker };
@@ -1,7 +1,8 @@
1
1
  import { _ as icon, a as calendarAttr, b as setText, c as onUnlessFalse, d as str, f as swallowInnerChange, g as el, h as CalendarView, i as bool, l as panelLayout, n as defineElement, o as int, p as theme, r as Base, t as ELEMENT_NAMES, v as setAttrs, x as uid, y as setPopupMode } from "./registry-BvkGnkvV.js";
2
+ import { n as openPanel, r as renderSegment } from "./preset-list-DmE6fJjr.js";
2
3
  import { getLocale } from "@nepdatejs/core";
3
4
  import { createMultiDatePicker } from "@nepdatejs/datepicker";
4
- import { onBackdropPointer, onEscape, onOutsidePointer, restoreFocus, trackPosition } from "@nepdatejs/dom";
5
+ import { restoreFocus } from "@nepdatejs/dom";
5
6
  //#region src/multi-view.ts
6
7
  const VIEW_KEYS = /* @__PURE__ */ new Set([
7
8
  "name",
@@ -195,13 +196,7 @@ var MultiDatePickerView = class {
195
196
  });
196
197
  this.hint.hidden = state.error === null;
197
198
  setText(this.hint, state.error?.message ?? "");
198
- this.segment.hidden = !state.canSwitchCalendar;
199
- setAttrs(this.segment, { "aria-label": locale.labels.calendar });
200
- for (const button of this.segment.querySelectorAll("button")) {
201
- const calendar = button.dataset["calendar"] === "AD" ? "AD" : "BS";
202
- setText(button, locale.calendarNames[calendar]);
203
- setAttrs(button, { "aria-pressed": String(calendar === state.calendar) });
204
- }
199
+ renderSegment(this.segment, state, locale);
205
200
  setText(this.doneButton, locale.labels.done);
206
201
  this.doneButton.hidden = state.inline;
207
202
  const name = this.options.hiddenInput === false ? void 0 : this.options.name;
@@ -221,27 +216,17 @@ var MultiDatePickerView = class {
221
216
  this.wasOpen = open;
222
217
  this.options.onOpenChange?.(open);
223
218
  if (open) {
224
- this.panel.hidden = false;
225
- const stopTracking = trackPosition(this.box, this.panel, {
219
+ this.closePanel = openPanel({
220
+ panel: this.panel,
221
+ anchor: this.box,
222
+ inside: [this.field, this.panel],
226
223
  width: 320,
227
- layout: this.options.panelLayout
228
- });
229
- const close = () => {
230
- this.store.actions.close();
231
- };
232
- const stopOutside = onOutsidePointer([this.field, this.panel], close);
233
- const stopBackdrop = onBackdropPointer(this.panel, close);
234
- const stopEscape = onEscape(() => {
235
- close();
236
- restoreFocus(this.input);
224
+ layout: this.options.panelLayout,
225
+ close: () => {
226
+ this.store.actions.close();
227
+ },
228
+ returnFocus: this.input
237
229
  });
238
- this.closePanel = () => {
239
- stopTracking();
240
- stopOutside();
241
- stopBackdrop();
242
- stopEscape();
243
- this.panel.hidden = true;
244
- };
245
230
  this.calendarView.focusGrid();
246
231
  } else {
247
232
  this.closePanel?.();
@@ -436,4 +421,4 @@ function createMultiDatePicker$1(container, options = {}) {
436
421
  //#endregion
437
422
  export { MultiDatePickerView as i, defineMultiDatePicker as n, NepMultiDatePickerElement as r, createMultiDatePicker$1 as t };
438
423
 
439
- //# sourceMappingURL=multi-date-picker-XCg8Y0sF.js.map
424
+ //# sourceMappingURL=multi-date-picker-C3Lr0Dq-.js.map