@digitransit-component/digitransit-component-favourite-modal 4.0.8 → 5.0.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.
- package/LICENSE-AGPL.txt +661 -0
- package/LICENSE-EUPL.txt +291 -0
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.development.cjs +749 -2
- package/lib/index.js +739 -0
- package/lib/index.js.map +1 -0
- package/package.json +18 -7
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/translations.js","../src/helpers/i18n.js","../src/helpers/DesktopModal.js","../src/helpers/MobileModal.js","../src/index.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/* eslint sort-keys: \"error\" */\nconst translations = {\n de: {\n translation: {\n cancel: 'Abbrechen',\n 'choose-icon': 'Wählen Sie ein Symbol für diesen Ort',\n 'close-favourite-modal': 'Favoriten-Dialog schließen',\n 'edit-place': 'Ort bearbeiten',\n 'favourite-modal-on-add-new': 'Neuen Favoriten hinzufügen',\n 'favourite-modal-on-edit': 'Favorit bearbeiten: {{favourite.name}}',\n 'input-placeholder': 'Einen Namen für Ort setzen (optional)',\n save: 'Speichern',\n 'save-place': 'Favorit speichern',\n },\n },\n en: {\n translation: {\n cancel: 'Cancel',\n 'cannot-save-place': 'Cannot save a place without address or icon',\n 'choose-icon': \"Select the place's icon\",\n 'close-favourite-modal': 'Close the favourite modal',\n 'edit-place': 'Edit place',\n 'favourite-modal-on-add-new': 'Add a new favorite',\n 'favourite-modal-on-edit': 'Editing favourite: {{favourite.name}}',\n home: 'home',\n 'input-placeholder': 'Give the name a place (optional)',\n place: 'a place',\n 'required-text': 'required field',\n save: 'Save',\n 'save-place': 'Save place',\n school: 'school',\n shopping: 'shopping',\n sport: 'sport',\n work: 'work',\n },\n },\n fi: {\n translation: {\n cancel: 'Peruuta',\n 'cannot-save-place':\n 'Paikkaa ilman osoitetta tai ikonia ei voida tallentaa',\n 'choose-icon': 'Valitse paikan kuvake',\n 'close-favourite-modal': 'Sulje suosikkimodaali',\n 'edit-place': 'Muokkaa paikkaa',\n 'favourite-modal-on-add-new': 'Lisää uusi suosikki',\n 'favourite-modal-on-edit': 'Muokkaa suosikkia {{favourite.name}}',\n home: 'koti',\n 'input-placeholder': 'Anna paikalle nimi (vapaaehtoinen)',\n place: 'paikka',\n 'required-text': 'pakollinen kenttä',\n save: 'Tallenna',\n 'save-place': 'Tallenna paikka',\n school: 'koulu',\n shopping: 'ostokset',\n sport: 'urheilu',\n work: 'työ',\n },\n },\n pl: {\n translation: {\n cancel: 'Anuluj',\n 'cannot-save-place': 'Nie można zapisać miejsca bez nazwy lub ikony',\n 'choose-icon': 'Wybierz ikonę miejsca',\n 'close-favourite-modal': 'Zamknij modal ulubionych',\n 'edit-place': 'Edytuj miejsce',\n 'favourite-modal-on-add-new': 'Dodaj ulubione miejsce',\n 'favourite-modal-on-edit':\n 'Edycja ulubionego miejsca: {{favourite.name}}',\n home: 'dom',\n 'input-placeholder': 'Nadaj nazwę miejscu (opcjonalne)',\n place: 'miejsce',\n 'required-text': 'pole wymagane',\n save: 'Zapisz',\n 'save-place': 'Zapisz miejsce',\n school: 'szkoła',\n shopping: 'zakupy',\n sport: 'sport',\n work: 'praca',\n },\n },\n sv: {\n translation: {\n cancel: 'Avbryt',\n 'cannot-save-place':\n 'Det går inte att spara en plats utan adress eller ikon',\n 'choose-icon': 'Välj platsens ikon',\n 'close-favourite-modal': 'Stäng favoritmodalen',\n 'edit-place': 'Redigera plats',\n 'favourite-modal-on-add-new': 'Lägg till ny favorit',\n 'favourite-modal-on-edit': 'Redigera platsen: {{favourite.name}}',\n home: 'hem',\n 'input-placeholder': 'Ange platsens namn (frivilligt)',\n place: 'en plats',\n 'required-text': 'obligatoriskt fält',\n save: 'Spara',\n 'save-place': 'Spara plats',\n school: 'skola',\n shopping: 'shoppa',\n sport: 'sport',\n work: 'arbete',\n },\n },\n};\n\nexport default translations;\n","import { createInstance } from 'i18next';\nimport translations from './translations';\n\nconst i18n = createInstance({\n fallbackLng: 'fi',\n // debug: true,\n resources: translations,\n defaultNS: 'translation',\n react: {\n useSuspense: true,\n },\n});\n\ni18n.init();\n\nexport default i18n;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './desktop.scss';\n\nconst DesktopModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n isEdit,\n cancelText,\n cancelSelected,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-desktop-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-desktop-top']}>\n <div className={styles['favourite-modal-desktop-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-desktop-main']}>\n <div className={styles['favourite-modal-desktop-location-search']}>\n {autosuggestComponent}\n </div>\n <div className={styles['favourite-modal-desktop-name']}>\n <input\n aria-label={inputPlaceholder}\n className={styles['favourite-modal-desktop-input']}\n value={name}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n </div>\n <fieldset className={styles['icons-container']}>\n <legend className={styles['favourite-modal-desktop-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </legend>\n <div className={styles['favourite-modal-desktop-icons']}>\n {favouriteIconTable}\n </div>\n </fieldset>\n <div className={styles['favourite-modal-desktop-buttons']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.save} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n aria-disabled={!canSave()}\n >\n {saveText}\n </button>\n {isEdit && (\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.edit} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={cancelSelected}\n >\n {cancelText}\n </button>\n )}\n </div>\n </div>\n );\n};\n\nDesktopModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n isEdit: PropTypes.bool,\n cancelText: PropTypes.string.isRequired,\n cancelSelected: PropTypes.func,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nDesktopModal.defaultProps = {\n isEdit: false,\n cancelSelected: () => ({}),\n};\n\nexport default DesktopModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './mobile.scss';\n\nconst MobileModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-mobile-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-mobile-top']}>\n <div className={styles['favourite-modal-mobile-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-mobile-main']}>\n <div className={styles['favourite-modal-mobile-location-search']}>\n {autosuggestComponent}\n </div>\n <input\n className={styles['favourite-modal-mobile-input']}\n value={name || ''}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n <div className={styles['favourite-modal-mobile-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </div>\n <div className={styles['favourite-modal-mobile-icons']}>\n {favouriteIconTable}\n </div>\n <div className={styles['favourite-modal-mobile-save']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-mobile-button']} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n >\n {saveText}\n </button>\n </div>\n </div>\n );\n};\n\nMobileModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nexport default MobileModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport {\n I18nextProvider,\n useTranslation,\n withTranslation,\n} from 'react-i18next';\nimport isEmpty from 'lodash/isEmpty';\nimport isNumber from 'lodash/isNumber';\nimport Modal from '@hsl-fi/modal';\nimport Icon, {\n defaultColors,\n} from '@digitransit-component/digitransit-component-icon';\nimport styles from './helpers/styles.scss';\nimport i18n from './helpers/i18n';\nimport DesktopModal from './helpers/DesktopModal';\nimport MobileModal from './helpers/MobileModal';\n\nconst FavouriteIconIdToNameMap = {\n 'icon-icon_place': 'place',\n 'icon-icon_home': 'home',\n 'icon-icon_work': 'work',\n 'icon-icon_sport': 'sport',\n 'icon-icon_school': 'school',\n 'icon-icon_shopping': 'shopping',\n};\n\nconst FavouriteIconTableButton = ({\n value,\n selectedIconId,\n handleClick,\n color,\n lang,\n}) => {\n const [t] = useTranslation();\n const [isHovered, setHover] = useState(false);\n const [isFocused, setFocus] = useState(false);\n const iconColor =\n value === FavouriteIconIdToNameMap[selectedIconId] || isHovered || isFocused\n ? '#ffffff'\n : color;\n return (\n <button\n type=\"button\"\n className={cx(styles['favourite-icon-table-column'], styles[value], {\n [styles['selected-icon']]:\n value === FavouriteIconIdToNameMap[selectedIconId],\n })}\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n onClick={() => handleClick(value)}\n aria-label={t(value, { lng: lang })}\n >\n <Icon img={value} color={iconColor} />\n </button>\n );\n};\n\nFavouriteIconTableButton.propTypes = {\n handleClick: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n selectedIconId: PropTypes.string,\n color: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\nFavouriteIconTableButton.defaultProps = {\n selectedIconId: '',\n};\n\nconst FavouriteIconTable = ({ favouriteIconIds, ...rest }) => {\n const columns = favouriteIconIds.map(value => (\n <FavouriteIconTableButton\n key={`favourite-icon-table-${value}`}\n value={value}\n {...rest}\n />\n ));\n\n return (\n <div className={styles['generic-table']}>\n <div className={styles.row}>{columns}</div>\n </div>\n );\n};\n\nFavouriteIconTable.propTypes = {\n favouriteIconIds: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\n/**\n * @example\n * <FavouriteModal\n * show={modalOpen}\n * handleClose={handleClose}\n * saveFavourite={onSaveFavourite}\n * location={selectedLocation}\n * favourite={favourite}\n * lang={lang}\n * autosuggestComponent={\n * <AutoSuggest\n * sources={['History', 'Datasource']}\n * targets={['Locations', 'CurrentPosition']}\n * id=\"favourite\"\n * autoFocus={false}\n * placeholder=\"search-address-or-place\"\n * value={selectedLocation.address || ''}\n * onFavouriteSelected={this.setLocationProperties}\n * lang={lang}\n * />\n * }\n * />\n */\nclass FavouriteModal extends React.Component {\n static propTypes = {\n isModalOpen: PropTypes.bool.isRequired,\n /** Required.\n * @type{function} */\n handleClose: PropTypes.func.isRequired,\n /** Required.\n * @type{function} */\n saveFavourite: PropTypes.func.isRequired,\n /** Required. Only used when editing favourite.\n * @type{function} */\n cancelSelected: PropTypes.func,\n /** Optional.\n * Autosuggest component for searching new favourites.\n * @type{node}\n */\n autosuggestComponent: PropTypes.node,\n /** Optional.\n * Object to prefill input field for name and/or selected icon.\n * @type {object}\n * @property {string} type\n * @property {string} address\n * @property {string} gtfsId\n * @property {string} gid\n * @property {number} lat\n * @property {number} lon\n * @property {string} name\n * @property {string} selectedIconId\n * @property {string} favouriteId\n * @property {string} layer\n * @property {string} defaultName\n */\n favourite: PropTypes.shape({\n type: PropTypes.string,\n address: PropTypes.string,\n gtfsId: PropTypes.string,\n gid: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n name: PropTypes.string,\n selectedIconId: PropTypes.string,\n favouriteId: PropTypes.string,\n layer: PropTypes.string,\n defaultName: PropTypes.string,\n }),\n /** Optional.\n * @type {function} */\n addAnalyticsEvent: PropTypes.func,\n /** Optional. Language, fi, en or sv.\n * @type {string} */\n lang: PropTypes.string,\n /** Translation function */\n t: PropTypes.func.isRequired,\n /** Optional. */\n isMobile: PropTypes.bool,\n appElement: PropTypes.string.isRequired,\n colors: PropTypes.objectOf(PropTypes.string),\n /** Optional. */\n fontWeights: PropTypes.shape({\n /** Default value is 500. */\n medium: PropTypes.number,\n }),\n };\n\n static defaultProps = {\n cancelSelected: () => ({}),\n lang: 'fi',\n isMobile: false,\n favourite: null,\n autosuggestComponent: undefined,\n addAnalyticsEvent: undefined,\n colors: defaultColors,\n fontWeights: {\n medium: 500,\n },\n };\n\n static favouriteIconIds = [\n 'place',\n 'home',\n 'work',\n 'sport',\n 'school',\n 'shopping',\n ];\n\n constructor(props) {\n super(props);\n this.state = {\n favourite: null,\n };\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const prevFav = prevState.favourite;\n const nextFav = nextProps.favourite;\n\n if (isEmpty(nextFav)) {\n return {\n favourite: null,\n };\n }\n\n if (isEmpty(prevFav) && !isEmpty(nextFav)) {\n return {\n favourite: {\n ...nextFav,\n },\n };\n }\n if (\n !isEmpty(prevFav) &&\n !isEmpty(nextFav) &&\n (nextFav.address !== prevFav.address ||\n nextFav.lat !== prevFav.lat ||\n nextFav.lon !== prevFav.lon)\n ) {\n return {\n favourite: {\n ...prevFav,\n address: nextFav.address,\n lat: nextFav.lat,\n lon: nextFav.lon,\n gid: nextFav.gid || null,\n name: prevFav.name || nextFav.name || '',\n defaultName: nextFav.defaultName,\n },\n };\n }\n return null;\n }\n\n componentWillUnmount() {\n this.setState({ favourite: null });\n }\n\n specifyName = event => {\n const name = event.target.value;\n this.setState(prevState => ({\n favourite: { ...prevState.favourite, name },\n }));\n };\n\n selectIcon = id => {\n this.setState(prevState => ({\n favourite: {\n ...prevState.favourite,\n selectedIconId: `icon-icon_${id}`,\n },\n }));\n };\n\n isEdit = () =>\n this.state.favourite && this.state.favourite.favouriteId !== undefined;\n\n canSave = () =>\n this.state.favourite &&\n !isEmpty(this.state.favourite.selectedIconId) &&\n isNumber(this.state.favourite.lat) &&\n isNumber(this.state.favourite.lon);\n\n closeModal = () => {\n this.props.handleClose();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n cancelSelected = () => {\n this.props.cancelSelected();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n save = () => {\n if (this.canSave()) {\n const name = isEmpty(this.state.favourite.name)\n ? this.state.favourite.defaultName\n : this.state.favourite.name;\n\n const favourite = { ...this.state.favourite, name };\n delete favourite.defaultName;\n this.props.saveFavourite({ ...favourite, type: 'place' });\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n category: 'Favourite',\n action: 'SaveFavourite',\n name: this.state.favourite.selectedIconId,\n });\n }\n if (this.isEdit() && this.props.cancelSelected) {\n this.cancelSelected();\n } else {\n this.closeModal();\n }\n }\n };\n\n render() {\n const { favourite } = this.state;\n const { fontWeights, lang, t } = this.props;\n const { primary, hover } = this.props.colors;\n\n const headerText = this.isEdit()\n ? t('edit-place', { lng: lang })\n : t('save-place', { lng: lang });\n const modalProps = {\n headerText,\n autosuggestComponent: this.props.autosuggestComponent,\n inputPlaceholder: t('input-placeholder', { lng: lang }),\n specifyName: this.specifyName,\n name: (favourite && favourite.name) || '',\n chooseIconText: t('choose-icon', { lng: lang }),\n favouriteIconTable: (\n <FavouriteIconTable\n selectedIconId={(() => {\n if ((favourite && favourite.selectedIconId !== undefined) || null) {\n return favourite.selectedIconId;\n }\n return undefined;\n })()}\n favouriteIconIds={FavouriteModal.favouriteIconIds}\n handleClick={this.selectIcon}\n color={primary}\n lang={lang}\n />\n ),\n saveFavourite: this.save,\n saveText: t('save', { lng: lang }),\n canSave: this.canSave,\n isEdit: this.isEdit(),\n cancelText: t('cancel', { lng: lang }),\n cancelSelected: () => this.cancelSelected(),\n color: primary,\n hoverColor: hover,\n savePlaceText: t('save-place', { lng: lang }),\n cantSaveText: t('cannot-save-place', { lng: lang }),\n requiredText: t('required-text', { lng: lang }),\n fontWeights,\n };\n return (\n <Modal\n appElement={this.props.appElement}\n contentLabel={\n this.isEdit()\n ? t('favourite-modal-on-edit', { lng: lang, favourite })\n : t('favourite-modal-on-add-new', { lng: lang })\n }\n closeButtonLabel={t('close-favourite-modal', { lng: lang })}\n variant={!this.props.isMobile ? 'small' : 'large'}\n isOpen={this.props.isModalOpen}\n onCrossClick={() => this.closeModal()}\n >\n {!this.props.isMobile && <DesktopModal {...modalProps} />}\n {this.props.isMobile && <MobileModal {...modalProps} />}\n </Modal>\n );\n }\n}\n\nconst FavouriteModalWithTranslation = withTranslation()(FavouriteModal);\n\nexport default props => (\n <I18nextProvider i18n={i18n}>\n <FavouriteModalWithTranslation {...props} />\n </I18nextProvider>\n);\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","Object","defineProperty","value","enumerable","configurable","writable","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","i18n","createInstance","fallbackLng","resources","de","translation","cancel","save","en","home","place","school","shopping","sport","work","fi","pl","sv","defaultNS","react","useSuspense","init","DesktopModal","headerText","autosuggestComponent","inputPlaceholder","specifyName","name","chooseIconText","favouriteIconTable","saveFavourite","saveText","canSave","isEdit","cancelText","cancelSelected","color","hoverColor","savePlaceText","cantSaveText","requiredText","fontWeights","React","className","styles","medium","placeholder","onChange","onClick","process","env","NODE_ENV","propTypes","PropTypes","string","isRequired","node","func","bool","shape","number","defaultProps","MobileModal","disabled","FavouriteIconIdToNameMap","FavouriteIconTableButton","selectedIconId","handleClick","lang","useTranslation","isHovered","setHover","useState","isFocused","setFocus","iconColor","cx","onMouseEnter","onMouseLeave","onFocus","onBlur","lng","Icon","img","FavouriteIconTable","_ref","favouriteIconIds","rest","n","hasOwnProperty","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","length","propertyIsEnumerable","_objectWithoutProperties","_excluded","columns","map","assign","key","row","arrayOf","FavouriteModal","Component","props","super","this","event","target","setState","prevState","favourite","_objectSpread","id","state","undefined","favouriteId","isEmpty","isNumber","lat","lon","handleClose","setTimeout","defaultName","addAnalyticsEvent","category","action","closeModal","getDerivedStateFromProps","nextProps","prevFav","nextFav","address","gid","componentWillUnmount","render","primary","hover","colors","modalProps","selectIcon","Modal","appElement","contentLabel","closeButtonLabel","variant","isMobile","isOpen","isModalOpen","onCrossClick","defaultColors","gtfsId","layer","objectOf","FavouriteModalWithTranslation","withTranslation","I18nextProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,10,11]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/translations.js","../src/helpers/i18n.js","../src/helpers/DesktopModal.jsx","../src/helpers/MobileModal.jsx","../src/index.jsx","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/* eslint sort-keys: \"error\" */\nconst translations = {\n de: {\n translation: {\n cancel: 'Abbrechen',\n 'choose-icon': 'Wählen Sie ein Symbol für diesen Ort',\n 'close-favourite-modal': 'Favoriten-Dialog schließen',\n 'edit-place': 'Ort bearbeiten',\n 'favourite-modal-on-add-new': 'Neuen Favoriten hinzufügen',\n 'favourite-modal-on-edit': 'Favorit bearbeiten: {{favourite.name}}',\n 'input-placeholder': 'Einen Namen für Ort setzen (optional)',\n save: 'Speichern',\n 'save-place': 'Favorit speichern',\n },\n },\n en: {\n translation: {\n cancel: 'Cancel',\n 'cannot-save-place': 'Cannot save a place without address or icon',\n 'choose-icon': \"Select the place's icon\",\n 'close-favourite-modal': 'Close the favourite modal',\n 'edit-place': 'Edit place',\n 'favourite-modal-on-add-new': 'Add a new favorite',\n 'favourite-modal-on-edit': 'Editing favourite: {{favourite.name}}',\n home: 'home',\n 'input-placeholder': 'Give the name a place (optional)',\n place: 'a place',\n 'required-text': 'required field',\n save: 'Save',\n 'save-place': 'Save place',\n school: 'school',\n shopping: 'shopping',\n sport: 'sport',\n work: 'work',\n },\n },\n fi: {\n translation: {\n cancel: 'Peruuta',\n 'cannot-save-place':\n 'Paikkaa ilman osoitetta tai ikonia ei voida tallentaa',\n 'choose-icon': 'Valitse paikan kuvake',\n 'close-favourite-modal': 'Sulje suosikkimodaali',\n 'edit-place': 'Muokkaa paikkaa',\n 'favourite-modal-on-add-new': 'Lisää uusi suosikki',\n 'favourite-modal-on-edit': 'Muokkaa suosikkia {{favourite.name}}',\n home: 'koti',\n 'input-placeholder': 'Anna paikalle nimi (vapaaehtoinen)',\n place: 'paikka',\n 'required-text': 'pakollinen kenttä',\n save: 'Tallenna',\n 'save-place': 'Tallenna paikka',\n school: 'koulu',\n shopping: 'ostokset',\n sport: 'urheilu',\n work: 'työ',\n },\n },\n pl: {\n translation: {\n cancel: 'Anuluj',\n 'cannot-save-place': 'Nie można zapisać miejsca bez nazwy lub ikony',\n 'choose-icon': 'Wybierz ikonę miejsca',\n 'close-favourite-modal': 'Zamknij modal ulubionych',\n 'edit-place': 'Edytuj miejsce',\n 'favourite-modal-on-add-new': 'Dodaj ulubione miejsce',\n 'favourite-modal-on-edit':\n 'Edycja ulubionego miejsca: {{favourite.name}}',\n home: 'dom',\n 'input-placeholder': 'Nadaj nazwę miejscu (opcjonalne)',\n place: 'miejsce',\n 'required-text': 'pole wymagane',\n save: 'Zapisz',\n 'save-place': 'Zapisz miejsce',\n school: 'szkoła',\n shopping: 'zakupy',\n sport: 'sport',\n work: 'praca',\n },\n },\n sv: {\n translation: {\n cancel: 'Avbryt',\n 'cannot-save-place':\n 'Det går inte att spara en plats utan adress eller ikon',\n 'choose-icon': 'Välj platsens ikon',\n 'close-favourite-modal': 'Stäng favoritmodalen',\n 'edit-place': 'Redigera plats',\n 'favourite-modal-on-add-new': 'Lägg till ny favorit',\n 'favourite-modal-on-edit': 'Redigera platsen: {{favourite.name}}',\n home: 'hem',\n 'input-placeholder': 'Ange platsens namn (frivilligt)',\n place: 'en plats',\n 'required-text': 'obligatoriskt fält',\n save: 'Spara',\n 'save-place': 'Spara plats',\n school: 'skola',\n shopping: 'shoppa',\n sport: 'sport',\n work: 'arbete',\n },\n },\n};\n\nexport default translations;\n","import { createInstance } from 'i18next';\nimport translations from './translations';\n\nconst i18n = createInstance({\n fallbackLng: 'fi',\n // debug: true,\n resources: translations,\n defaultNS: 'translation',\n react: {\n useSuspense: true,\n },\n});\n\ni18n.init();\n\nexport default i18n;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './desktop.scss';\n\nconst DesktopModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n isEdit,\n cancelText,\n cancelSelected,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-desktop-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-desktop-top']}>\n <div className={styles['favourite-modal-desktop-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-desktop-main']}>\n <div className={styles['favourite-modal-desktop-location-search']}>\n {autosuggestComponent}\n </div>\n <div className={styles['favourite-modal-desktop-name']}>\n <input\n aria-label={inputPlaceholder}\n className={styles['favourite-modal-desktop-input']}\n value={name}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n </div>\n <fieldset className={styles['icons-container']}>\n <legend className={styles['favourite-modal-desktop-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </legend>\n <div className={styles['favourite-modal-desktop-icons']}>\n {favouriteIconTable}\n </div>\n </fieldset>\n <div className={styles['favourite-modal-desktop-buttons']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.save} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n aria-disabled={!canSave()}\n >\n {saveText}\n </button>\n {isEdit && (\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-desktop-button']} ${styles.edit} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={cancelSelected}\n >\n {cancelText}\n </button>\n )}\n </div>\n </div>\n );\n};\n\nDesktopModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n isEdit: PropTypes.bool,\n cancelText: PropTypes.string.isRequired,\n cancelSelected: PropTypes.func,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nDesktopModal.defaultProps = {\n isEdit: false,\n cancelSelected: () => ({}),\n};\n\nexport default DesktopModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport styles from './mobile.scss';\n\nconst MobileModal = ({\n headerText,\n autosuggestComponent,\n inputPlaceholder,\n specifyName,\n name,\n chooseIconText,\n favouriteIconTable,\n saveFavourite,\n saveText,\n canSave,\n color,\n hoverColor,\n savePlaceText,\n cantSaveText,\n requiredText,\n fontWeights,\n}) => {\n return (\n <div\n className={styles['favourite-modal-mobile-container']}\n style={{\n '--color': `${color}`,\n '--hover-color': `${hoverColor}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n <div className={styles['favourite-modal-mobile-top']}>\n <div className={styles['favourite-modal-mobile-header']}>\n {headerText}\n </div>\n </div>\n <div className={styles['favourite-modal-mobile-main']}>\n <div className={styles['favourite-modal-mobile-location-search']}>\n {autosuggestComponent}\n </div>\n <input\n className={styles['favourite-modal-mobile-input']}\n value={name || ''}\n placeholder={inputPlaceholder}\n onChange={specifyName}\n />\n </div>\n <div className={styles['favourite-modal-mobile-text']}>\n {chooseIconText}\n <p className={styles['sr-only']}>{requiredText}</p>\n </div>\n <div className={styles['favourite-modal-mobile-icons']}>\n {favouriteIconTable}\n </div>\n <div className={styles['favourite-modal-mobile-save']}>\n <button\n type=\"button\"\n className={cx(\n `${styles['favourite-modal-mobile-button']} ${\n canSave() ? '' : styles.disabled\n }`,\n )}\n onClick={saveFavourite}\n aria-label={`${canSave() ? savePlaceText : cantSaveText}`}\n >\n {saveText}\n </button>\n </div>\n </div>\n );\n};\n\nMobileModal.propTypes = {\n headerText: PropTypes.string.isRequired,\n autosuggestComponent: PropTypes.node.isRequired,\n inputPlaceholder: PropTypes.string.isRequired,\n specifyName: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n chooseIconText: PropTypes.string.isRequired,\n favouriteIconTable: PropTypes.node.isRequired,\n saveFavourite: PropTypes.func.isRequired,\n saveText: PropTypes.string.isRequired,\n canSave: PropTypes.func.isRequired,\n color: PropTypes.string.isRequired,\n hoverColor: PropTypes.string.isRequired,\n savePlaceText: PropTypes.string.isRequired,\n cantSaveText: PropTypes.string.isRequired,\n requiredText: PropTypes.string.isRequired,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number.isRequired,\n }).isRequired,\n};\n\nexport default MobileModal;\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport {\n I18nextProvider,\n useTranslation,\n withTranslation,\n} from 'react-i18next';\nimport isEmpty from 'lodash/isEmpty.js';\nimport isNumber from 'lodash/isNumber.js';\nimport Modal from '@hsl-fi/modal';\nimport Icon, {\n defaultColors,\n} from '@digitransit-component/digitransit-component-icon';\nimport styles from './helpers/styles.scss';\nimport i18n from './helpers/i18n';\nimport DesktopModal from './helpers/DesktopModal';\nimport MobileModal from './helpers/MobileModal';\n\nconst FavouriteIconIdToNameMap = {\n 'icon-icon_place': 'place',\n 'icon-icon_home': 'home',\n 'icon-icon_work': 'work',\n 'icon-icon_sport': 'sport',\n 'icon-icon_school': 'school',\n 'icon-icon_shopping': 'shopping',\n};\n\nconst FavouriteIconTableButton = ({\n value,\n selectedIconId,\n handleClick,\n color,\n lang,\n}) => {\n const [t] = useTranslation();\n const [isHovered, setHover] = useState(false);\n const [isFocused, setFocus] = useState(false);\n const iconColor =\n value === FavouriteIconIdToNameMap[selectedIconId] || isHovered || isFocused\n ? '#ffffff'\n : color;\n return (\n <button\n type=\"button\"\n className={cx(styles['favourite-icon-table-column'], styles[value], {\n [styles['selected-icon']]:\n value === FavouriteIconIdToNameMap[selectedIconId],\n })}\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n onClick={() => handleClick(value)}\n aria-label={t(value, { lng: lang })}\n >\n <Icon img={value} color={iconColor} />\n </button>\n );\n};\n\nFavouriteIconTableButton.propTypes = {\n handleClick: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n selectedIconId: PropTypes.string,\n color: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\nFavouriteIconTableButton.defaultProps = {\n selectedIconId: '',\n};\n\nconst FavouriteIconTable = ({ favouriteIconIds, ...rest }) => {\n const columns = favouriteIconIds.map(value => (\n <FavouriteIconTableButton\n key={`favourite-icon-table-${value}`}\n value={value}\n {...rest}\n />\n ));\n\n return (\n <div className={styles['generic-table']}>\n <div className={styles.row}>{columns}</div>\n </div>\n );\n};\n\nFavouriteIconTable.propTypes = {\n favouriteIconIds: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\n/**\n * @example\n * <FavouriteModal\n * show={modalOpen}\n * handleClose={handleClose}\n * saveFavourite={onSaveFavourite}\n * location={selectedLocation}\n * favourite={favourite}\n * lang={lang}\n * autosuggestComponent={\n * <AutoSuggest\n * sources={['History', 'Datasource']}\n * targets={['Locations', 'CurrentPosition']}\n * id=\"favourite\"\n * autoFocus={false}\n * placeholder=\"search-address-or-place\"\n * value={selectedLocation.address || ''}\n * onFavouriteSelected={this.setLocationProperties}\n * lang={lang}\n * />\n * }\n * />\n */\nclass FavouriteModal extends React.Component {\n static propTypes = {\n isModalOpen: PropTypes.bool.isRequired,\n /** Required.\n * @type{function} */\n handleClose: PropTypes.func.isRequired,\n /** Required.\n * @type{function} */\n saveFavourite: PropTypes.func.isRequired,\n /** Required. Only used when editing favourite.\n * @type{function} */\n cancelSelected: PropTypes.func,\n /** Optional.\n * Autosuggest component for searching new favourites.\n * @type{node}\n */\n autosuggestComponent: PropTypes.node,\n /** Optional.\n * Object to prefill input field for name and/or selected icon.\n * @type {object}\n * @property {string} type\n * @property {string} address\n * @property {string} gtfsId\n * @property {string} gid\n * @property {number} lat\n * @property {number} lon\n * @property {string} name\n * @property {string} selectedIconId\n * @property {string} favouriteId\n * @property {string} layer\n * @property {string} defaultName\n */\n favourite: PropTypes.shape({\n type: PropTypes.string,\n address: PropTypes.string,\n gtfsId: PropTypes.string,\n gid: PropTypes.string,\n lat: PropTypes.number,\n lon: PropTypes.number,\n name: PropTypes.string,\n selectedIconId: PropTypes.string,\n favouriteId: PropTypes.string,\n layer: PropTypes.string,\n defaultName: PropTypes.string,\n }),\n /** Optional.\n * @type {function} */\n addAnalyticsEvent: PropTypes.func,\n /** Optional. Language, fi, en or sv.\n * @type {string} */\n lang: PropTypes.string,\n /** Translation function */\n t: PropTypes.func.isRequired,\n /** Optional. */\n isMobile: PropTypes.bool,\n appElement: PropTypes.string.isRequired,\n colors: PropTypes.objectOf(PropTypes.string),\n /** Optional. */\n fontWeights: PropTypes.shape({\n /** Default value is 500. */\n medium: PropTypes.number,\n }),\n };\n\n static defaultProps = {\n cancelSelected: () => ({}),\n lang: 'fi',\n isMobile: false,\n favourite: null,\n autosuggestComponent: undefined,\n addAnalyticsEvent: undefined,\n colors: defaultColors,\n fontWeights: {\n medium: 500,\n },\n };\n\n static favouriteIconIds = [\n 'place',\n 'home',\n 'work',\n 'sport',\n 'school',\n 'shopping',\n ];\n\n constructor(props) {\n super(props);\n this.state = {\n favourite: null,\n };\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const prevFav = prevState.favourite;\n const nextFav = nextProps.favourite;\n\n if (isEmpty(nextFav)) {\n return {\n favourite: null,\n };\n }\n\n if (isEmpty(prevFav) && !isEmpty(nextFav)) {\n return {\n favourite: {\n ...nextFav,\n },\n };\n }\n if (\n !isEmpty(prevFav) &&\n !isEmpty(nextFav) &&\n (nextFav.address !== prevFav.address ||\n nextFav.lat !== prevFav.lat ||\n nextFav.lon !== prevFav.lon)\n ) {\n return {\n favourite: {\n ...prevFav,\n address: nextFav.address,\n lat: nextFav.lat,\n lon: nextFav.lon,\n gid: nextFav.gid || null,\n name: prevFav.name || nextFav.name || '',\n defaultName: nextFav.defaultName,\n },\n };\n }\n return null;\n }\n\n componentWillUnmount() {\n this.setState({ favourite: null });\n }\n\n specifyName = event => {\n const name = event.target.value;\n this.setState(prevState => ({\n favourite: { ...prevState.favourite, name },\n }));\n };\n\n selectIcon = id => {\n this.setState(prevState => ({\n favourite: {\n ...prevState.favourite,\n selectedIconId: `icon-icon_${id}`,\n },\n }));\n };\n\n isEdit = () =>\n this.state.favourite && this.state.favourite.favouriteId !== undefined;\n\n canSave = () =>\n this.state.favourite &&\n !isEmpty(this.state.favourite.selectedIconId) &&\n isNumber(this.state.favourite.lat) &&\n isNumber(this.state.favourite.lon);\n\n closeModal = () => {\n this.props.handleClose();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n cancelSelected = () => {\n this.props.cancelSelected();\n // hsl-fi/modal close animation lasts 250ms\n setTimeout(() => {\n this.setState({ favourite: null });\n }, 250);\n };\n\n save = () => {\n if (this.canSave()) {\n const name = isEmpty(this.state.favourite.name)\n ? this.state.favourite.defaultName\n : this.state.favourite.name;\n\n const favourite = { ...this.state.favourite, name };\n delete favourite.defaultName;\n this.props.saveFavourite({ ...favourite, type: 'place' });\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n category: 'Favourite',\n action: 'SaveFavourite',\n name: this.state.favourite.selectedIconId,\n });\n }\n if (this.isEdit() && this.props.cancelSelected) {\n this.cancelSelected();\n } else {\n this.closeModal();\n }\n }\n };\n\n render() {\n const { favourite } = this.state;\n const { fontWeights, lang, t } = this.props;\n const { primary, hover } = this.props.colors;\n\n const headerText = this.isEdit()\n ? t('edit-place', { lng: lang })\n : t('save-place', { lng: lang });\n const modalProps = {\n headerText,\n autosuggestComponent: this.props.autosuggestComponent,\n inputPlaceholder: t('input-placeholder', { lng: lang }),\n specifyName: this.specifyName,\n name: (favourite && favourite.name) || '',\n chooseIconText: t('choose-icon', { lng: lang }),\n favouriteIconTable: (\n <FavouriteIconTable\n selectedIconId={(() => {\n if ((favourite && favourite.selectedIconId !== undefined) || null) {\n return favourite.selectedIconId;\n }\n return undefined;\n })()}\n favouriteIconIds={FavouriteModal.favouriteIconIds}\n handleClick={this.selectIcon}\n color={primary}\n lang={lang}\n />\n ),\n saveFavourite: this.save,\n saveText: t('save', { lng: lang }),\n canSave: this.canSave,\n isEdit: this.isEdit(),\n cancelText: t('cancel', { lng: lang }),\n cancelSelected: () => this.cancelSelected(),\n color: primary,\n hoverColor: hover,\n savePlaceText: t('save-place', { lng: lang }),\n cantSaveText: t('cannot-save-place', { lng: lang }),\n requiredText: t('required-text', { lng: lang }),\n fontWeights,\n };\n return (\n <Modal\n appElement={this.props.appElement}\n contentLabel={\n this.isEdit()\n ? t('favourite-modal-on-edit', { lng: lang, favourite })\n : t('favourite-modal-on-add-new', { lng: lang })\n }\n closeButtonLabel={t('close-favourite-modal', { lng: lang })}\n variant={!this.props.isMobile ? 'small' : 'large'}\n isOpen={this.props.isModalOpen}\n onCrossClick={() => this.closeModal()}\n >\n {!this.props.isMobile && <DesktopModal {...modalProps} />}\n {this.props.isMobile && <MobileModal {...modalProps} />}\n </Modal>\n );\n }\n}\n\nconst FavouriteModalWithTranslation = withTranslation()(FavouriteModal);\n\nexport default props => (\n <I18nextProvider i18n={i18n}>\n <FavouriteModalWithTranslation {...props} />\n </I18nextProvider>\n);\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","Object","defineProperty","value","enumerable","configurable","writable","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","i18n","createInstance","fallbackLng","resources","de","translation","cancel","save","en","home","place","school","shopping","sport","work","fi","pl","sv","defaultNS","react","useSuspense","init","DesktopModal","headerText","autosuggestComponent","inputPlaceholder","specifyName","name","chooseIconText","favouriteIconTable","saveFavourite","saveText","canSave","isEdit","cancelText","cancelSelected","color","hoverColor","savePlaceText","cantSaveText","requiredText","fontWeights","React","className","styles","medium","placeholder","onChange","onClick","process","env","NODE_ENV","propTypes","PropTypes","string","isRequired","node","func","bool","shape","number","defaultProps","MobileModal","disabled","FavouriteIconIdToNameMap","FavouriteIconTableButton","selectedIconId","handleClick","lang","useTranslation","isHovered","setHover","useState","isFocused","setFocus","iconColor","cx","onMouseEnter","onMouseLeave","onFocus","onBlur","lng","Icon","img","FavouriteIconTable","_ref","favouriteIconIds","rest","n","hasOwnProperty","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","length","propertyIsEnumerable","_objectWithoutProperties","_excluded","columns","map","assign","key","row","arrayOf","FavouriteModal","Component","props","super","this","event","target","setState","prevState","favourite","_objectSpread","id","state","undefined","favouriteId","isEmpty","isNumber","lat","lon","handleClose","setTimeout","defaultName","addAnalyticsEvent","category","action","closeModal","getDerivedStateFromProps","nextProps","prevFav","nextFav","address","gid","componentWillUnmount","render","primary","hover","colors","modalProps","selectIcon","Modal","appElement","contentLabel","closeButtonLabel","variant","isMobile","isOpen","isModalOpen","onCrossClick","defaultColors","gtfsId","layer","objectOf","FavouriteModalWithTranslation","withTranslation","I18nextProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,10,11]}
|