@govtechsg/sgds-web-component 3.24.0-rc.1 → 3.24.0

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 (71) hide show
  1. package/components/Checkbox/index.umd.min.js +1 -1
  2. package/components/Checkbox/index.umd.min.js.map +1 -1
  3. package/components/ComboBox/index.umd.min.js +1 -1
  4. package/components/ComboBox/index.umd.min.js.map +1 -1
  5. package/components/Datepicker/datepicker-calendar.js +4 -4
  6. package/components/Datepicker/datepicker-calendar.js.map +1 -1
  7. package/components/Datepicker/datepicker-header.js +2 -2
  8. package/components/Datepicker/datepicker-header.js.map +1 -1
  9. package/components/Datepicker/datepicker-input.js +48 -13
  10. package/components/Datepicker/datepicker-input.js.map +1 -1
  11. package/components/Datepicker/index.umd.min.js +335 -335
  12. package/components/Datepicker/index.umd.min.js.map +1 -1
  13. package/components/Datepicker/sgds-datepicker.js +6 -6
  14. package/components/Datepicker/sgds-datepicker.js.map +1 -1
  15. package/components/Radio/index.umd.min.js +1 -1
  16. package/components/Radio/index.umd.min.js.map +1 -1
  17. package/components/Switch/index.umd.min.js +1 -1
  18. package/components/Switch/index.umd.min.js.map +1 -1
  19. package/components/Switch/switch.js +1 -1
  20. package/components/index.umd.min.js +423 -423
  21. package/components/index.umd.min.js.map +1 -1
  22. package/css/fouc.css +1 -1
  23. package/custom-elements.json +645 -645
  24. package/index.umd.min.js +467 -467
  25. package/index.umd.min.js.map +1 -1
  26. package/package.json +3 -1
  27. package/react/components/Datepicker/datepicker-calendar.cjs.js +4 -4
  28. package/react/components/Datepicker/datepicker-calendar.cjs.js.map +1 -1
  29. package/react/components/Datepicker/datepicker-calendar.js +4 -4
  30. package/react/components/Datepicker/datepicker-calendar.js.map +1 -1
  31. package/react/components/Datepicker/datepicker-header.cjs.js +2 -2
  32. package/react/components/Datepicker/datepicker-header.cjs.js.map +1 -1
  33. package/react/components/Datepicker/datepicker-header.js +2 -2
  34. package/react/components/Datepicker/datepicker-header.js.map +1 -1
  35. package/react/components/Datepicker/datepicker-input.cjs.js +52 -13
  36. package/react/components/Datepicker/datepicker-input.cjs.js.map +1 -1
  37. package/react/components/Datepicker/datepicker-input.js +48 -13
  38. package/react/components/Datepicker/datepicker-input.js.map +1 -1
  39. package/react/components/Datepicker/sgds-datepicker.cjs.js +6 -6
  40. package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
  41. package/react/components/Datepicker/sgds-datepicker.js +6 -6
  42. package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
  43. package/react/components/Switch/switch.cjs.js +1 -1
  44. package/react/components/Switch/switch.js +1 -1
  45. package/react/index.cjs.js +6 -6
  46. package/react/index.d.ts +1 -1
  47. package/react/index.js +1 -1
  48. package/react/styles/form-check.cjs.js +1 -1
  49. package/react/styles/form-check.js +1 -1
  50. package/react/utils/time.cjs.js +7 -7
  51. package/react/utils/time.cjs.js.map +1 -1
  52. package/react/utils/time.js +1 -1
  53. package/react/utils/time.js.map +1 -1
  54. package/styles/form-check.js +1 -1
  55. package/types/react.d.ts +16 -16
  56. package/utils/time.js +1 -1
  57. package/utils/time.js.map +1 -1
  58. package/react/utils/date-helpers.cjs.js +0 -120
  59. package/react/utils/date-helpers.cjs.js.map +0 -1
  60. package/react/utils/date-helpers.js +0 -108
  61. package/react/utils/date-helpers.js.map +0 -1
  62. package/react/utils/date-mask.cjs.js +0 -203
  63. package/react/utils/date-mask.cjs.js.map +0 -1
  64. package/react/utils/date-mask.js +0 -199
  65. package/react/utils/date-mask.js.map +0 -1
  66. package/utils/date-helpers.d.ts +0 -22
  67. package/utils/date-helpers.js +0 -107
  68. package/utils/date-helpers.js.map +0 -1
  69. package/utils/date-mask.d.ts +0 -44
  70. package/utils/date-mask.js +0 -198
  71. package/utils/date-mask.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-mask.js","sources":["../../src/utils/date-mask.ts"],"sourcesContent":["/**\n * Lightweight date input mask replacing imask.\n * Handles digit-only input with placeholder display for date formats.\n */\n\ntype MaskEventType = \"accept\" | \"complete\";\ntype MaskEventHandler = () => void;\n\nexport class DateMask {\n private input: HTMLInputElement;\n private placeholderStr: string;\n private _state: string; // tracks the current masked value\n private listeners: Map<MaskEventType, MaskEventHandler[]> = new Map();\n private _boundHandleBeforeInput: (e: InputEvent) => void;\n private _boundHandleInput: (e: InputEvent) => void;\n private _boundHandleKeydown: (e: KeyboardEvent) => void;\n private _boundHandleFocus: () => void;\n private _boundHandleBlur: () => void;\n private _valueAtFocus: string;\n\n public masked: { value: string; isComplete: boolean };\n\n constructor(input: HTMLInputElement, options: DateMaskOptions) {\n this.input = input;\n this.placeholderStr = this._buildPlaceholder(options.pattern);\n this._state = this.placeholderStr;\n this.listeners.set(\"accept\", []);\n this.listeners.set(\"complete\", []);\n\n const masked = { value: \"\", isComplete: false };\n Object.defineProperties(masked, {\n value: { get: () => this._state, enumerable: true },\n isComplete: { get: () => this._state.length > 0 && !/[DMY]/.test(this._state), enumerable: true }\n });\n this.masked = masked;\n\n // If input already has a value that looks like a filled date, use it\n if (this.input.value && this.input.value.length === this._state.length && !/[DMY]/.test(this.input.value)) {\n this._state = this.input.value;\n } else {\n this.input.value = this._state;\n }\n\n this._boundHandleBeforeInput = this._handleBeforeInput.bind(this);\n this._boundHandleInput = this._handleInput.bind(this);\n this._boundHandleKeydown = this._handleKeydown.bind(this);\n this._boundHandleFocus = this._handleFocus.bind(this);\n this._boundHandleBlur = this._handleBlur.bind(this);\n this._valueAtFocus = this._state;\n\n this.input.addEventListener(\"beforeinput\", this._boundHandleBeforeInput);\n this.input.addEventListener(\"input\", this._boundHandleInput);\n this.input.addEventListener(\"keydown\", this._boundHandleKeydown);\n this.input.addEventListener(\"focus\", this._boundHandleFocus);\n this.input.addEventListener(\"blur\", this._boundHandleBlur);\n }\n\n get value(): string {\n return this._state;\n }\n\n set value(val: string) {\n if (!val || val === \"\") {\n this._state = this.placeholderStr;\n } else {\n this._state = val;\n }\n this.input.value = this._state;\n this._emit(\"accept\");\n }\n\n on(event: MaskEventType, handler: MaskEventHandler): void {\n this.listeners.get(event)?.push(handler);\n }\n\n updateValue(): void {\n // Sync state from input (used when value set externally on input)\n this._state = this.input.value;\n }\n\n destroy(): void {\n this.input.removeEventListener(\"beforeinput\", this._boundHandleBeforeInput);\n this.input.removeEventListener(\"input\", this._boundHandleInput);\n this.input.removeEventListener(\"keydown\", this._boundHandleKeydown);\n this.input.removeEventListener(\"focus\", this._boundHandleFocus);\n this.input.removeEventListener(\"blur\", this._boundHandleBlur);\n this.listeners.clear();\n }\n\n private _handleFocus(): void {\n this._valueAtFocus = this._state;\n }\n\n private _handleBlur(): void {\n // Dispatch native change event if value changed during this focus session\n if (this._state !== this._valueAtFocus) {\n this.input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }\n\n private _buildPlaceholder(pattern: string): string {\n return pattern\n .replace(/`/g, \"\")\n .replace(/\\{(\\/)\\}/g, \"$1\")\n .replace(/d/g, \"D\")\n .replace(/m/g, \"M\")\n .replace(/y/g, \"Y\");\n }\n\n private _getDigitPositions(): number[] {\n const positions: number[] = [];\n for (let i = 0; i < this.placeholderStr.length; i++) {\n const ch = this.placeholderStr[i];\n if (ch === \"D\" || ch === \"M\" || ch === \"Y\") {\n positions.push(i);\n }\n }\n return positions;\n }\n\n private _handleBeforeInput(e: InputEvent): void {\n // Prevent browser's default text handling — we handle everything in keydown\n e.preventDefault();\n }\n\n private _handleInput(): void {\n // If browser still modified the value (some edge cases), restore our state\n if (this.input.value !== this._state) {\n this.input.value = this._state;\n }\n }\n\n private _handleKeydown(e: KeyboardEvent): void {\n if (e.key === \"Backspace\") {\n e.preventDefault();\n this._backspace();\n } else if (e.key === \"Delete\") {\n e.preventDefault();\n this._deleteForward();\n } else if (e.key.length === 1 && /\\d/.test(e.key)) {\n e.preventDefault();\n this._insertDigit(e.key);\n }\n // Arrow keys: let browser handle cursor movement naturally\n }\n\n private _insertDigit(digit: string): void {\n const digitPositions = this._getDigitPositions();\n const currentVal = this._state.split(\"\");\n\n // Find the first unfilled placeholder position\n let insertPos = -1;\n for (const pos of digitPositions) {\n if (/[DMY]/.test(currentVal[pos])) {\n insertPos = pos;\n break;\n }\n }\n\n if (insertPos === -1) {\n // All filled — no room\n return;\n }\n\n currentVal[insertPos] = digit;\n this._state = currentVal.join(\"\");\n this.input.value = this._state;\n\n // Move cursor after the inserted digit\n const nextPos = this._findNextInputPos(insertPos);\n this.input.setSelectionRange(nextPos, nextPos);\n\n this._emit(\"accept\");\n\n if (this.masked.isComplete) {\n this._emit(\"complete\");\n }\n }\n\n private _backspace(): void {\n const pos = this.input.selectionStart ?? this._state.length;\n const val = this._state.split(\"\");\n\n // Find previous digit position from cursor\n let targetPos = pos - 1;\n while (targetPos >= 0 && !/\\d/.test(val[targetPos])) {\n targetPos--;\n }\n\n if (targetPos >= 0) {\n val[targetPos] = this.placeholderStr[targetPos];\n this._state = val.join(\"\");\n this.input.value = this._state;\n this.input.setSelectionRange(targetPos, targetPos);\n this._emit(\"accept\");\n }\n }\n\n private _deleteForward(): void {\n const pos = this.input.selectionStart ?? 0;\n const val = this._state.split(\"\");\n\n let targetPos = pos;\n while (targetPos < val.length && !/\\d/.test(val[targetPos])) {\n targetPos++;\n }\n\n if (targetPos < val.length) {\n val[targetPos] = this.placeholderStr[targetPos];\n this._state = val.join(\"\");\n this.input.value = this._state;\n this.input.setSelectionRange(pos, pos);\n this._emit(\"accept\");\n }\n }\n\n private _findNextInputPos(pos: number): number {\n for (let i = pos + 1; i < this._state.length; i++) {\n if (/[DMY]/.test(this._state[i])) {\n return i;\n }\n }\n // If no more placeholders, place cursor at end\n return this._state.length;\n }\n\n private _emit(event: MaskEventType): void {\n const handlers = this.listeners.get(event);\n if (handlers) {\n for (const handler of handlers) {\n handler();\n }\n }\n }\n}\n\nexport interface DateMaskOptions {\n pattern: string;\n}\n"],"names":[],"mappings":"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"}