diff --git a/dist/index.js b/dist/index.js index 936578b..82750bf 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2,7 +2,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } -var stimulus = require('stimulus'); +var stimulus = require('@hotwired/stimulus'); var flatpickr = _interopDefault(require('flatpickr')); function _classCallCheck(instance, Constructor) { diff --git a/dist/index.js.map b/dist/index.js.map index f3f1c94..fdfbc26 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/utils.js","../src/config_options.js","../src/events.js","../src/elements.js","../src/strftime_mapping.js","../src/index.js"],"sourcesContent":["export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n","const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n","export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n","export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n","export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n","import { Controller } from 'stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n"],"names":["kebabCase","string","replace","toLowerCase","capitalize","charAt","toUpperCase","slice","booleanOptions","stringOptions","numberOptions","arrayOptions","arrayOrStringOptions","dateOptions","dateFormats","options","boolean","date","array","number","arrayOrString","events","elements","mapping","strftimeRegex","RegExp","Object","keys","join","convertDateFormat","format","match","StimulusFlatpickr","config","_initializeEvents","_initializeOptions","_initializeDateFormats","fp","flatpickr","flatpickrElement","_initializeElements","value","inputTarget","destroy","forEach","event","hook","bind","optionType","optionsCamelCase","option","optionKebab","data","has","_handleDaysOfWeek","disableDaysOfWeek","_validateDaysOfWeek","disable","_disable","enableDaysOfWeek","enable","_enable","days","Array","isArray","map","day","parseInt","console","error","disabledDays","includes","getDay","enabledDays","dateFormat","get","element","JSON","parse","val","e","hasInstanceTarget","instanceTarget","Controller"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/utils.js","../src/config_options.js","../src/events.js","../src/elements.js","../src/strftime_mapping.js","../src/index.js"],"sourcesContent":["export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n","const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n","export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n","export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n","export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n","import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n"],"names":["kebabCase","string","replace","toLowerCase","capitalize","charAt","toUpperCase","slice","booleanOptions","stringOptions","numberOptions","arrayOptions","arrayOrStringOptions","dateOptions","dateFormats","options","boolean","date","array","number","arrayOrString","events","elements","mapping","strftimeRegex","RegExp","Object","keys","join","convertDateFormat","format","match","StimulusFlatpickr","config","_initializeEvents","_initializeOptions","_initializeDateFormats","fp","flatpickr","flatpickrElement","_initializeElements","value","inputTarget","destroy","forEach","event","hook","bind","optionType","optionsCamelCase","option","optionKebab","data","has","_handleDaysOfWeek","disableDaysOfWeek","_validateDaysOfWeek","disable","_disable","enableDaysOfWeek","enable","_enable","days","Array","isArray","map","day","parseInt","console","error","disabledDays","includes","getDay","enabledDays","dateFormat","get","element","JSON","parse","val","e","hasInstanceTarget","instanceTarget","Controller"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.m.js b/dist/index.m.js index c0ebd7d..2175590 100644 --- a/dist/index.m.js +++ b/dist/index.m.js @@ -1,4 +1,4 @@ -import { Controller } from 'stimulus'; +import { Controller } from '@hotwired/stimulus'; import flatpickr from 'flatpickr'; function _classCallCheck(instance, Constructor) { diff --git a/dist/index.m.js.map b/dist/index.m.js.map index 095bb96..d6a47f5 100644 --- a/dist/index.m.js.map +++ b/dist/index.m.js.map @@ -1 +1 @@ -{"version":3,"file":"index.m.js","sources":["../src/utils.js","../src/config_options.js","../src/events.js","../src/elements.js","../src/strftime_mapping.js","../src/index.js"],"sourcesContent":["export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n","const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n","export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n","export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n","export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n","import { Controller } from 'stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n"],"names":["kebabCase","string","replace","toLowerCase","capitalize","charAt","toUpperCase","slice","booleanOptions","stringOptions","numberOptions","arrayOptions","arrayOrStringOptions","dateOptions","dateFormats","options","boolean","date","array","number","arrayOrString","events","elements","mapping","strftimeRegex","RegExp","Object","keys","join","convertDateFormat","format","match","StimulusFlatpickr","config","_initializeEvents","_initializeOptions","_initializeDateFormats","fp","flatpickr","flatpickrElement","_initializeElements","value","inputTarget","destroy","forEach","event","hook","bind","optionType","optionsCamelCase","option","optionKebab","data","has","_handleDaysOfWeek","disableDaysOfWeek","_validateDaysOfWeek","disable","_disable","enableDaysOfWeek","enable","_enable","days","Array","isArray","map","day","parseInt","console","error","disabledDays","includes","getDay","enabledDays","dateFormat","get","element","JSON","parse","val","e","hasInstanceTarget","instanceTarget","Controller"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.m.js","sources":["../src/utils.js","../src/config_options.js","../src/events.js","../src/elements.js","../src/strftime_mapping.js","../src/index.js"],"sourcesContent":["export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n","const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n","export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n","export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n","export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n","import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n"],"names":["kebabCase","string","replace","toLowerCase","capitalize","charAt","toUpperCase","slice","booleanOptions","stringOptions","numberOptions","arrayOptions","arrayOrStringOptions","dateOptions","dateFormats","options","boolean","date","array","number","arrayOrString","events","elements","mapping","strftimeRegex","RegExp","Object","keys","join","convertDateFormat","format","match","StimulusFlatpickr","config","_initializeEvents","_initializeOptions","_initializeDateFormats","fp","flatpickr","flatpickrElement","_initializeElements","value","inputTarget","destroy","forEach","event","hook","bind","optionType","optionsCamelCase","option","optionKebab","data","has","_handleDaysOfWeek","disableDaysOfWeek","_validateDaysOfWeek","disable","_disable","enableDaysOfWeek","enable","_enable","days","Array","isArray","map","day","parseInt","console","error","disabledDays","includes","getDay","enabledDays","dateFormat","get","element","JSON","parse","val","e","hasInstanceTarget","instanceTarget","Controller"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js index ff6de10..f1293bf 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1,7 +1,7 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('stimulus'), require('flatpickr')) : - typeof define === 'function' && define.amd ? define(['stimulus', 'flatpickr'], factory) : - (global = global || self, global.StimulusFlatpikcr = factory(global.Stimulus, global.Flatpickr)); + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@hotwired/stimulus'), require('flatpickr')) : + typeof define === 'function' && define.amd ? define(['@hotwired/stimulus', 'flatpickr'], factory) : + (global = global || self, global.StimulusFlatpickr = factory(global.stimulus, global.Flatpickr)); }(this, (function (stimulus, flatpickr) { 'use strict'; flatpickr = flatpickr && Object.prototype.hasOwnProperty.call(flatpickr, 'default') ? flatpickr['default'] : flatpickr; diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map index e46a1dc..228d96a 100644 --- a/dist/index.umd.js.map +++ b/dist/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../src/utils.js","../src/config_options.js","../src/events.js","../src/elements.js","../src/strftime_mapping.js","../src/index.js"],"sourcesContent":["export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n","const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n","export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n","export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n","export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n","import { Controller } from 'stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n"],"names":["kebabCase","string","replace","toLowerCase","capitalize","charAt","toUpperCase","slice","booleanOptions","stringOptions","numberOptions","arrayOptions","arrayOrStringOptions","dateOptions","dateFormats","options","boolean","date","array","number","arrayOrString","events","elements","mapping","strftimeRegex","RegExp","Object","keys","join","convertDateFormat","format","match","StimulusFlatpickr","config","_initializeEvents","_initializeOptions","_initializeDateFormats","fp","flatpickr","flatpickrElement","_initializeElements","value","inputTarget","destroy","forEach","event","hook","bind","optionType","optionsCamelCase","option","optionKebab","data","has","_handleDaysOfWeek","disableDaysOfWeek","_validateDaysOfWeek","disable","_disable","enableDaysOfWeek","enable","_enable","days","Array","isArray","map","day","parseInt","console","error","disabledDays","includes","getDay","enabledDays","dateFormat","get","element","JSON","parse","val","e","hasInstanceTarget","instanceTarget","Controller"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/utils.js","../src/config_options.js","../src/events.js","../src/elements.js","../src/strftime_mapping.js","../src/index.js"],"sourcesContent":["export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n","const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n","export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n","export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n","export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n","import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n"],"names":["kebabCase","string","replace","toLowerCase","capitalize","charAt","toUpperCase","slice","booleanOptions","stringOptions","numberOptions","arrayOptions","arrayOrStringOptions","dateOptions","dateFormats","options","boolean","date","array","number","arrayOrString","events","elements","mapping","strftimeRegex","RegExp","Object","keys","join","convertDateFormat","format","match","StimulusFlatpickr","config","_initializeEvents","_initializeOptions","_initializeDateFormats","fp","flatpickr","flatpickrElement","_initializeElements","value","inputTarget","destroy","forEach","event","hook","bind","optionType","optionsCamelCase","option","optionKebab","data","has","_handleDaysOfWeek","disableDaysOfWeek","_validateDaysOfWeek","disable","_disable","enableDaysOfWeek","enable","_enable","days","Array","isArray","map","day","parseInt","console","error","disabledDays","includes","getDay","enabledDays","dateFormat","get","element","JSON","parse","val","e","hasInstanceTarget","instanceTarget","Controller"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 03ff51f..340cadf 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "amdName": "StimulusFlatpickr", "author": "@adrienpoly", "license": "MIT", - "external": "stimulus, flatpickr", + "external": "@hotwired/stimulus, flatpickr", "scripts": { "start:playground": "webpack-dev-server --mode development --open --config playground/webpack.config.js --hot", "build": "rollup -c && yarn test", @@ -27,7 +27,7 @@ }, "peerDependencies": { "flatpickr": ">=4.6.2", - "stimulus": ">=1.1.1" + "@hotwired/stimulus": ">=3.0.1" }, "devDependencies": { "@babel/core": "^7.6.0", @@ -73,7 +73,7 @@ "sinon": "^6.1.4", "sinon-chai": "^3.2.0", "size-plugin": "^1.0.1", - "stimulus": "^1.1.1", + "@hotwired/stimulus": "^3.0.1", "style-loader": "^0.23.0", "webpack": "^4.39.3", "webpack-cli": "^3.2.3", @@ -87,4 +87,4 @@ "resolutions": { "minimist": "^1.2.5" } -} +} \ No newline at end of file diff --git a/playground/src/index.js b/playground/src/index.js index 34a8e24..e1e6b87 100644 --- a/playground/src/index.js +++ b/playground/src/index.js @@ -1,4 +1,4 @@ -import { Application } from 'stimulus' +import { Application } from '@hotwired/stimulus' import FlatpickrController from './controllers/flatpickr_controller' const application = Application.start() diff --git a/readme.md b/readme.md index 8c9b8eb..828be26 100644 --- a/readme.md +++ b/readme.md @@ -90,8 +90,8 @@ manually register a new Stimulus controller in your main JS entry point. ```js // ./packs/application.js -import { Application } from 'stimulus' -import { definitionsFromContext } from 'stimulus/webpack-helpers' +import { Application } from '@hotwired/stimulus' +import { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers' const application = Application.start() const context = require.context('../controllers', true, /\.js$/) diff --git a/rollup.config.js b/rollup.config.js index ab2f95b..0fec8e4 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -6,7 +6,7 @@ const pkg = require('./package.json') export default { input: 'src/index.js', - external: ['stimulus', 'flatpickr'], + external: ['@hotwired/stimulus', 'flatpickr'], output: [ { file: 'dist/index.js', diff --git a/spec/flatpickr_controller_events_spec.js b/spec/flatpickr_controller_events_spec.js index 91fa190..a1cce25 100644 --- a/spec/flatpickr_controller_events_spec.js +++ b/spec/flatpickr_controller_events_spec.js @@ -1,5 +1,5 @@ // import Flatpickr from './controllers/flatpickr_hook_controller' -import { Application } from 'stimulus' +import { Application } from '@hotwired/stimulus' import StimulusFlatpickr from './controllers/flatpickr_hook_controller' import 'flatpickr/dist/flatpickr.css' import { registerController, nextFrame, fixtureQuerySelector, addFlatpickrOption } from './helpers' diff --git a/spec/flatpickr_controller_spec.js b/spec/flatpickr_controller_spec.js index 252b790..da98d0c 100644 --- a/spec/flatpickr_controller_spec.js +++ b/spec/flatpickr_controller_spec.js @@ -1,4 +1,4 @@ -import { Application } from 'stimulus' +import { Application } from '@hotwired/stimulus' import chai, { expect } from 'chai' import chaiDom from 'chai-dom' diff --git a/spec/flatpickr_controller_targets_spec.js b/spec/flatpickr_controller_targets_spec.js index e071655..e4a6be9 100644 --- a/spec/flatpickr_controller_targets_spec.js +++ b/spec/flatpickr_controller_targets_spec.js @@ -1,5 +1,5 @@ import StimulusFlatpickr from './controllers/flatpickr_controller' -import { Application } from 'stimulus' +import { Application } from '@hotwired/stimulus' import 'flatpickr/dist/flatpickr.css' import { nextFrame } from './helpers' import chai, { expect } from 'chai' diff --git a/spec/flatpickr_custom_element_spec.js b/spec/flatpickr_custom_element_spec.js index 659fe2e..ecd3062 100644 --- a/spec/flatpickr_custom_element_spec.js +++ b/spec/flatpickr_custom_element_spec.js @@ -1,4 +1,4 @@ -import { Application } from 'stimulus' +import { Application } from '@hotwired/stimulus' import chai, { expect } from 'chai' import chaiDom from 'chai-dom' diff --git a/spec/helpers.js b/spec/helpers.js index 1449906..bcdddda 100644 --- a/spec/helpers.js +++ b/spec/helpers.js @@ -1,4 +1,4 @@ -import { Application } from 'stimulus' +import { Application } from '@hotwired/stimulus' const nextFrame = async () => { return new Promise((resolve) => requestAnimationFrame(resolve)) diff --git a/src/index.js b/src/index.js index 1bfe6b7..f74ad1b 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -import { Controller } from 'stimulus' +import { Controller } from '@hotwired/stimulus' import flatpickr from 'flatpickr' import { kebabCase, capitalize } from './utils' import { options, dateFormats } from './config_options' diff --git a/yarn.lock b/yarn.lock index 6cb4671..a1737b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -762,6 +762,11 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@hotwired/stimulus@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.0.1.tgz#141f15645acaa3b133b7c247cad58ae252ffae85" + integrity sha512-oHsJhgY2cip+K2ED7vKUNd2P+BEswVhrCYcJ802DSsblJFv7mPFVk3cQKvm2vHgHeDVdnj7oOKrBbzp1u8D+KA== + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -808,30 +813,6 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@stimulus/core@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@stimulus/core/-/core-1.1.1.tgz#42b0cfe5b73ca492f41de64b77a03980bae92c82" - integrity sha512-PVJv7IpuQx0MVPCBblXc6O2zbCmU8dlxXNH4bC9KK6LsvGaE+PCXXrXQfXUwAsse1/CmRu/iQG7Ov58himjiGg== - dependencies: - "@stimulus/mutation-observers" "^1.1.1" - -"@stimulus/multimap@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@stimulus/multimap/-/multimap-1.1.1.tgz#b95e3fd607345ab36e5d5b55486ee1a12d56b331" - integrity sha512-26R1fI3a8uUj0WlMmta4qcfIQGlagegdP4PTz6lz852q/dXlG6r+uPS/bx+H8GtfyS+OOXVr3SkZ0Zg0iRqRfQ== - -"@stimulus/mutation-observers@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@stimulus/mutation-observers/-/mutation-observers-1.1.1.tgz#0f6c6f081308427fed2a26360dda0c173b79cfc0" - integrity sha512-/zCnnw1KJlWO2mrx0yxYaRFZWMGnDMdOgSnI4hxDLxdWVuL2HMROU8FpHWVBLjKY3T9A+lGkcrmPGDHF3pfS9w== - dependencies: - "@stimulus/multimap" "^1.1.1" - -"@stimulus/webpack-helpers@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@stimulus/webpack-helpers/-/webpack-helpers-1.1.1.tgz#eff60cd4e58b921d1a2764dc5215f5141510f2c2" - integrity sha512-XOkqSw53N9072FLHvpLM25PIwy+ndkSSbnTtjKuyzsv8K5yfkFB2rv68jU1pzqYa9FZLcvZWP4yazC0V38dx9A== - "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -7471,14 +7452,6 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stimulus@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stimulus/-/stimulus-1.1.1.tgz#53c2fded6849e7b85eed3ed8dd76e33abd74bec5" - integrity sha512-R0mBqKp48YnRDZOxZ8hiOH4Ilph3Yj78CIFTBkCwyHs4iGCpe7xlEdQ7cjIxb+7qVCSxFKgxO+mAQbsNgt/5XQ== - dependencies: - "@stimulus/core" "^1.1.1" - "@stimulus/webpack-helpers" "^1.1.1" - stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"