@nanoporetech-digital/components 2.11.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/nano-algolia.cjs.entry.js +5 -1
  4. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  5. package/dist/cjs/nano-components.cjs.js +1 -1
  6. package/dist/cjs/nano-date-input.cjs.entry.js +3 -0
  7. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nano-field-validator.cjs.entry.js +99 -35
  9. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nano-file-upload.cjs.entry.js +4 -1
  11. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nano-global-search-results.cjs.entry.js +20 -4
  13. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -0
  15. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  16. package/dist/collection/components/accordion/accordion.js +1 -1
  17. package/dist/collection/components/alert/alert.js +1 -1
  18. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  19. package/dist/collection/components/algolia/algolia-input.js +5 -5
  20. package/dist/collection/components/algolia/algolia-results.js +1 -1
  21. package/dist/collection/components/algolia/algolia.js +12 -6
  22. package/dist/collection/components/algolia/algolia.js.map +1 -1
  23. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  24. package/dist/collection/components/checkbox/checkbox.js +3 -3
  25. package/dist/collection/components/datalist/datalist.js +1 -1
  26. package/dist/collection/components/date-input/date-input.js +11 -8
  27. package/dist/collection/components/date-input/date-input.js.map +1 -1
  28. package/dist/collection/components/date-picker/date-picker.js +5 -5
  29. package/dist/collection/components/details/details.js +1 -1
  30. package/dist/collection/components/dialog/dialog.js +1 -1
  31. package/dist/collection/components/dropdown/dropdown.js +1 -1
  32. package/dist/collection/components/field-validator/field-validator-interface.js +5 -0
  33. package/dist/collection/components/field-validator/field-validator-interface.js.map +1 -0
  34. package/dist/collection/components/field-validator/field-validator.js +166 -50
  35. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  36. package/dist/collection/components/file-upload/file-upload.js +10 -7
  37. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  38. package/dist/collection/components/global-nav/global-nav.js +4 -4
  39. package/dist/collection/components/global-search-results/global-search-results.css +7 -0
  40. package/dist/collection/components/global-search-results/global-search-results.js +19 -3
  41. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  42. package/dist/collection/components/grid/grid-item.js +1 -1
  43. package/dist/collection/components/icon/icon.js +1 -1
  44. package/dist/collection/components/input/input.js +5 -5
  45. package/dist/collection/components/nav-item/nav-item.js +4 -4
  46. package/dist/collection/components/range/range.js +4 -4
  47. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  48. package/dist/collection/components/select/select.js +8 -7
  49. package/dist/collection/components/select/select.js.map +1 -1
  50. package/dist/collection/components/slides/slides.js +7 -7
  51. package/dist/collection/components/tabs/tab-group.js +2 -2
  52. package/dist/components/algolia.js +5 -1
  53. package/dist/components/algolia.js.map +1 -1
  54. package/dist/components/nano-date-input.js +3 -0
  55. package/dist/components/nano-date-input.js.map +1 -1
  56. package/dist/components/nano-field-validator.js +103 -37
  57. package/dist/components/nano-field-validator.js.map +1 -1
  58. package/dist/components/nano-file-upload.js +5 -2
  59. package/dist/components/nano-file-upload.js.map +1 -1
  60. package/dist/components/nano-global-search-results.js +20 -4
  61. package/dist/components/nano-global-search-results.js.map +1 -1
  62. package/dist/components/select.js +1 -0
  63. package/dist/components/select.js.map +1 -1
  64. package/dist/custom-elements/index.js +134 -43
  65. package/dist/custom-elements/index.js.map +1 -1
  66. package/dist/esm/loader.js +1 -1
  67. package/dist/esm/nano-algolia.entry.js +5 -1
  68. package/dist/esm/nano-algolia.entry.js.map +1 -1
  69. package/dist/esm/nano-components.js +1 -1
  70. package/dist/esm/nano-date-input.entry.js +3 -0
  71. package/dist/esm/nano-date-input.entry.js.map +1 -1
  72. package/dist/esm/nano-field-validator.entry.js +99 -35
  73. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  74. package/dist/esm/nano-file-upload.entry.js +4 -1
  75. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  76. package/dist/esm/nano-global-search-results.entry.js +20 -4
  77. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  78. package/dist/esm/nano-nav-item_2.entry.js +1 -0
  79. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  80. package/dist/esm-es5/loader.js +1 -1
  81. package/dist/esm-es5/loader.js.map +1 -1
  82. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  83. package/dist/esm-es5/nano-algolia.entry.js.map +1 -1
  84. package/dist/esm-es5/nano-components.js +1 -1
  85. package/dist/esm-es5/nano-components.js.map +1 -1
  86. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  87. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  88. package/dist/esm-es5/nano-field-validator.entry.js +1 -1
  89. package/dist/esm-es5/nano-field-validator.entry.js.map +1 -1
  90. package/dist/esm-es5/nano-file-upload.entry.js +1 -1
  91. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  92. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  93. package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
  94. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  95. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  96. package/dist/nano-components/nano-components.esm.js +1 -1
  97. package/dist/nano-components/nano-components.esm.js.map +1 -1
  98. package/dist/nano-components/p-018b7047.entry.js +5 -0
  99. package/dist/nano-components/p-018b7047.entry.js.map +1 -0
  100. package/dist/nano-components/{p-86bd5194.entry.js → p-055f7d35.entry.js} +2 -2
  101. package/dist/nano-components/p-055f7d35.entry.js.map +1 -0
  102. package/dist/nano-components/p-2b478ca1.system.entry.js +5 -0
  103. package/dist/nano-components/p-2b478ca1.system.entry.js.map +1 -0
  104. package/dist/nano-components/{p-bc394857.system.entry.js → p-4558a9c6.system.entry.js} +2 -2
  105. package/dist/nano-components/p-4558a9c6.system.entry.js.map +1 -0
  106. package/dist/nano-components/p-53957ec6.system.js +1 -1
  107. package/dist/nano-components/p-53957ec6.system.js.map +1 -1
  108. package/dist/nano-components/{p-d61ae833.system.entry.js → p-596c1711.system.entry.js} +2 -2
  109. package/dist/nano-components/p-596c1711.system.entry.js.map +1 -0
  110. package/dist/nano-components/p-5f4fc2b4.entry.js +5 -0
  111. package/dist/nano-components/p-5f4fc2b4.entry.js.map +1 -0
  112. package/dist/nano-components/p-6a949280.system.entry.js +5 -0
  113. package/dist/nano-components/p-6a949280.system.entry.js.map +1 -0
  114. package/dist/nano-components/{p-bf9aa89d.system.entry.js → p-6af10533.system.entry.js} +3 -3
  115. package/dist/nano-components/p-6af10533.system.entry.js.map +1 -0
  116. package/dist/nano-components/{p-f780d2f6.system.entry.js → p-72893d12.system.entry.js} +2 -2
  117. package/dist/nano-components/p-72893d12.system.entry.js.map +1 -0
  118. package/dist/nano-components/{p-1b120f53.entry.js → p-91614b43.entry.js} +2 -2
  119. package/dist/nano-components/p-91614b43.entry.js.map +1 -0
  120. package/dist/nano-components/{p-4e2c0abb.entry.js → p-ccd6c206.entry.js} +2 -2
  121. package/dist/nano-components/p-ccd6c206.entry.js.map +1 -0
  122. package/dist/nano-components/{p-2720ee8f.entry.js → p-ea54ee12.entry.js} +2 -2
  123. package/dist/nano-components/p-ea54ee12.entry.js.map +1 -0
  124. package/dist/types/components/algolia/algolia.d.ts +1 -0
  125. package/dist/types/components/field-validator/field-validator-interface.d.ts +15 -0
  126. package/dist/types/components/field-validator/field-validator.d.ts +16 -19
  127. package/dist/types/components/file-upload/file-upload.d.ts +2 -1
  128. package/dist/types/components/global-search-results/global-search-results.d.ts +1 -0
  129. package/dist/types/components.d.ts +23 -10
  130. package/dist/types/interface.d.ts +1 -0
  131. package/docs-json.json +45 -11
  132. package/docs-vscode.json +1 -1
  133. package/package.json +2 -2
  134. package/dist/nano-components/p-1b120f53.entry.js.map +0 -1
  135. package/dist/nano-components/p-21d6d31e.system.entry.js +0 -5
  136. package/dist/nano-components/p-21d6d31e.system.entry.js.map +0 -1
  137. package/dist/nano-components/p-2720ee8f.entry.js.map +0 -1
  138. package/dist/nano-components/p-4e2c0abb.entry.js.map +0 -1
  139. package/dist/nano-components/p-86bd5194.entry.js.map +0 -1
  140. package/dist/nano-components/p-bc394857.system.entry.js.map +0 -1
  141. package/dist/nano-components/p-bf9aa89d.system.entry.js.map +0 -1
  142. package/dist/nano-components/p-c3830c43.entry.js +0 -5
  143. package/dist/nano-components/p-c3830c43.entry.js.map +0 -1
  144. package/dist/nano-components/p-d61ae833.system.entry.js.map +0 -1
  145. package/dist/nano-components/p-d93274de.entry.js +0 -5
  146. package/dist/nano-components/p-d93274de.entry.js.map +0 -1
  147. package/dist/nano-components/p-e9a279ee.system.entry.js +0 -5
  148. package/dist/nano-components/p-e9a279ee.system.entry.js.map +0 -1
  149. package/dist/nano-components/p-f780d2f6.system.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport { debounce, getDirectChildren, raf } from '../../utils';\nimport algoliasearch, {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch';\nimport { Squirrel } from '../../utils/template';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { PromiseQueue } from '../../utils/promise-queue';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\nconst CANSHADOW = !!document.head.attachShadow;\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'\n * @slot search-input - optional. Should contain an algolia-input component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() resultsEmitterEle: HTMLElement;\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop({ mutable: true }) appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop({ mutable: true }) apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querSelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n /**\n * The query string used to search the index. Will automtically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop({ mutable: true }) replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an results have been updated\n */\n @Event() nanoNewResults!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent & { target: HTMLElement }) {\n ev.stopPropagation();\n\n if (ev.target.tagName === 'NANO-ALGOLIA-RESULTS') {\n raf(() => {\n this.nanoNewResults.emit(this.indexResults);\n });\n }\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n let dynFilterObj: FilterGroup = {};\n let filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n let appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n let found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n let searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n legacy: !CANSHADOW,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n let facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n @Listen('nanoChange', { target: 'body' })\n @Listen('change', { target: 'body' })\n handleInputChange(ev: CustomEvent | (Event & { target: HTMLElement })) {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n }\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n let outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n let tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n let algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n let placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/&gt;/gm, '>')\n .replace(/&lt;/gm, '<')\n .replace(/&amp;/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot) this.tpl = this.tplSlot.innerHTML;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n }\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport { debounce, getDirectChildren, raf } from '../../utils';\nimport algoliasearch, {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch';\nimport { Squirrel } from '../../utils/template';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { PromiseQueue } from '../../utils/promise-queue';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\nconst CANSHADOW = !!document.head.attachShadow;\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'\n * @slot search-input - optional. Should contain an algolia-input component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() resultsEmitterEle: HTMLElement;\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop({ mutable: true }) appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop({ mutable: true }) apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querSelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n /**\n * The query string used to search the index. Will automtically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop({ mutable: true }) replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an results have been updated\n */\n @Event() nanoNewResults!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent & { target: HTMLElement }) {\n ev.stopPropagation();\n\n if (ev.target.tagName === 'NANO-ALGOLIA-RESULTS') {\n raf(() => {\n this.nanoNewResults.emit(this.indexResults);\n });\n }\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n let dynFilterObj: FilterGroup = {};\n let filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n @Watch('filters')\n handleFilterpropChange() {\n this.algoliaSearch(SearchChangeEvent.Init);\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n let appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n let found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n let searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n legacy: !CANSHADOW,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n let facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n @Listen('nanoChange', { target: 'body' })\n @Listen('change', { target: 'body' })\n handleInputChange(ev: CustomEvent | (Event & { target: HTMLElement })) {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n }\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n let outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n let tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n let algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n let placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/&gt;/gm, '>')\n .replace(/&lt;/gm, '<')\n .replace(/&amp;/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot) this.tpl = this.tplSlot.innerHTML;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n }\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -430,7 +430,7 @@ export class CheckboxGroup {
430
430
  "references": {
431
431
  "ControlValidityEventDetail": {
432
432
  "location": "import",
433
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
433
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
434
434
  }
435
435
  }
436
436
  }
@@ -452,7 +452,7 @@ export class CheckboxGroup {
452
452
  },
453
453
  "ControlValidity": {
454
454
  "location": "import",
455
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
455
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
456
456
  }
457
457
  },
458
458
  "return": "Promise<ControlValidity>"
@@ -437,7 +437,7 @@ export class Checkbox {
437
437
  "references": {
438
438
  "Color": {
439
439
  "location": "import",
440
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
440
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
441
441
  }
442
442
  }
443
443
  },
@@ -492,7 +492,7 @@ export class Checkbox {
492
492
  "references": {
493
493
  "CheckboxChangeEventDetail": {
494
494
  "location": "import",
495
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
495
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
496
496
  }
497
497
  }
498
498
  }
@@ -563,7 +563,7 @@ export class Checkbox {
563
563
  },
564
564
  "ControlValidity": {
565
565
  "location": "import",
566
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
566
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
567
567
  }
568
568
  },
569
569
  "return": "Promise<ControlValidity>"
@@ -555,7 +555,7 @@ export class DataList {
555
555
  "references": {
556
556
  "OptionInterface": {
557
557
  "location": "import",
558
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
558
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
559
559
  }
560
560
  }
561
561
  },
@@ -250,6 +250,9 @@ export class DateInput {
250
250
  * @returns `{ isValid: boolean, errorMessage: string }`
251
251
  */
252
252
  async reportValidity(validateFirst) {
253
+ const initValidity = await this.input.reportValidity(validateFirst);
254
+ if (initValidity.isValid && validateFirst)
255
+ this.testDateValidity();
253
256
  return await this.input.reportValidity(validateFirst);
254
257
  }
255
258
  /**
@@ -445,7 +448,7 @@ export class DateInput {
445
448
  "references": {
446
449
  "LocalDateOpts": {
447
450
  "location": "import",
448
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
451
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
449
452
  }
450
453
  }
451
454
  },
@@ -566,7 +569,7 @@ export class DateInput {
566
569
  "references": {
567
570
  "DaysOfWeek": {
568
571
  "location": "import",
569
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/utils/date-utils.ts"
572
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/utils/date-utils.ts"
570
573
  }
571
574
  }
572
575
  },
@@ -590,7 +593,7 @@ export class DateInput {
590
593
  "references": {
591
594
  "DuetLocalizedText": {
592
595
  "location": "import",
593
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
596
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
594
597
  }
595
598
  }
596
599
  },
@@ -632,7 +635,7 @@ export class DateInput {
632
635
  "references": {
633
636
  "Color": {
634
637
  "location": "import",
635
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
638
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
636
639
  }
637
640
  }
638
641
  },
@@ -1009,7 +1012,7 @@ export class DateInput {
1009
1012
  "references": {
1010
1013
  "DateDisabledPredicate": {
1011
1014
  "location": "import",
1012
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
1015
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
1013
1016
  }
1014
1017
  }
1015
1018
  },
@@ -1045,7 +1048,7 @@ export class DateInput {
1045
1048
  "references": {
1046
1049
  "DateInputChangeEventDetail": {
1047
1050
  "location": "import",
1048
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
1051
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
1049
1052
  }
1050
1053
  }
1051
1054
  }
@@ -1068,7 +1071,7 @@ export class DateInput {
1068
1071
  "references": {
1069
1072
  "ControlValidityEventDetail": {
1070
1073
  "location": "import",
1071
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
1074
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
1072
1075
  }
1073
1076
  }
1074
1077
  }
@@ -1090,7 +1093,7 @@ export class DateInput {
1090
1093
  },
1091
1094
  "ControlValidity": {
1092
1095
  "location": "import",
1093
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
1096
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
1094
1097
  }
1095
1098
  },
1096
1099
  "return": "Promise<ControlValidity>"
@@ -1 +1 @@
1
- {"version":3,"file":"date-input.js","sourceRoot":"","sources":["../../../src/components/date-input/date-input.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n h,\n Prop,\n Watch,\n State,\n Event,\n EventEmitter,\n Host,\n Method,\n} from '@stencil/core';\nimport {\n createDate,\n DaysOfWeek,\n printISODate,\n parseISODate,\n} from '../../utils/date-utils';\n\nimport {\n PickerChangeEvent,\n DateInputChangeEventDetail,\n Color,\n LocalDateOpts,\n DuetLocalizedText,\n ControlValidity,\n ControlValidityEventDetail,\n DateDisabledPredicate,\n} from '../../interface';\nimport { createColorClasses } from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\n\nconst DateRegxps = {\n d: '(\\\\d{1,2})',\n m: '(\\\\d{1,2})',\n y: '(\\\\d{4})',\n};\n\nlet inputIds = 0;\n\n/**\n * The date-input component combines `nano-dropdown`, `nano-input` and `nano-date-picker` components to make a fully featured date form field. It has specific options for localisation, date formatting and validation.\n *\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot start - input start slot\n * @slot end - input end slot\n */\n@Component({\n tag: 'nano-date-input',\n styleUrl: 'date-input.scss',\n scoped: true,\n})\nexport class DateInput implements ComponentInterface {\n private pickerEle!: HTMLNanoDatePickerElement;\n private trigger!: HTMLButtonElement;\n private pickerCloseBtn!: HTMLButtonElement;\n private dropdown!: HTMLNanoDropdownElement;\n private input: HTMLNanoInputElement;\n private pickerOpenSource: 'key' | 'mouse';\n\n private directInput = false;\n private dateOrderIndeces = { d: 0, m: 1, y: 3 };\n private inputId = `nano-input-${inputIds++}`;\n private locale =\n (window.navigator.languages as string[]) ||\n window.navigator.language ||\n undefined;\n\n @Element() host: HTMLNanoDateInputElement;\n\n // Private state\n\n @State() pattern!: string;\n @State() inputValue: string;\n\n // Public Api / Prop\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n if (!this.input) return '';\n return this.input.validityMessage;\n }\n\n /**\n * Whether to show a long form, confirmation date string of the one currently entered\n */\n @Prop() helperText: boolean = true;\n\n /**\n * Options for the date string display. Refer to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString.\n */\n @Prop() helperTextFormat: LocalDateOpts = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop() readonly = false;\n\n /**\n * The initial size (number of characters) of the control.\n */\n @Prop() size?: number;\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * Which day is considered first day of the week? `0` for Sunday, `1` for Monday, etc.\n * Default is Monday.\n */\n @Prop() firstDayOfWeek?: DaysOfWeek;\n\n /**\n * Button labels, day names, month names, etc, used for localization.\n * Default is English.\n */\n @Prop() localization?: DuetLocalizedText;\n\n /**\n * If `true`, the user cannot interact with the input.\n */\n @Prop() disabled = false;\n\n /**\n * The color to use from the application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.\n */\n @Prop() clearInput = false;\n\n /**\n * String to place within a label element. Alternatively you may use a label slot.\n */\n @Prop() label?: string;\n\n /**\n * Instructional text that shows before the input has a value.\n * The pattern prop will be used to create a placeholder automatically if unused.\n */\n @Prop({ mutable: true }) placeholder: string;\n\n /**\n * Current value. Must be in IS0-8601 format: YYYY-MM-DD.\n */\n @Prop({ reflect: true, mutable: true }) value: string = '';\n\n @Watch('value')\n handleValueChange() {\n if (!this.directInput) this.inputValue = this.formatIsoDate(this.value);\n setTimeout(() => {\n this.nanoChange.emit({\n value: this.value,\n date: parseISODate(this.value),\n });\n }, 20);\n this.directInput = false;\n }\n\n /**\n * When should the field perform validation\n */\n @Prop() validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * The order of the date parts for entry and display.\n * e.g. dmy = dd mm yyyy\n */\n @Prop() dateOrder: 'dmy' | 'mdy' | 'ymd' | 'dym' = 'dmy';\n\n @Watch('dateOrder')\n handleDateOrderChange() {\n this.setDatePattern();\n }\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the max property.\n */\n @Prop() min?: string;\n\n /**\n * Maximum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the min property.\n */\n @Prop() max?: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n @Watch('min')\n @Watch('max')\n @Watch('value')\n testDateValidity() {\n const valueDate = parseISODate(this.value);\n let min: Date,\n max: Date,\n error: string = '';\n\n if (this.value && valueDate) {\n if (this.min && (min = parseISODate(this.min)) && valueDate < min) {\n error =\n 'Date below the minimum: ' +\n min.toLocaleDateString(this.locale, this.helperTextFormat);\n }\n if (this.max && (max = parseISODate(this.max)) && valueDate > max) {\n error =\n 'Date above the maximum: ' +\n max.toLocaleDateString(this.locale, this.helperTextFormat);\n }\n if (this.isDateDisabled(valueDate)) {\n error = 'Date selected is disabled.';\n }\n }\n\n requestAnimationFrame(async (_) => {\n if (!this.input) return;\n const input = await this.input.getInputElement();\n if (this.value.length && !valueDate) error = 'Please enter a valid date';\n\n input.setCustomValidity(error);\n if (this.input.validateOn === 'dirty') {\n this.input.showError(error);\n }\n });\n }\n\n /**\n * Show a date picker. Date pickers are not very useful\n * if the potential input is too far in the distance or past\n * e.g. Birthdays\n */\n @Prop() picker: boolean = true;\n\n /**\n * Initial picker date. Will be to `value` if set. Will be today's date if nothing set.\n * Must be in IS0-8601 format: YYYY-MM-DD.\n */\n @Prop() initialPickerDate?: string;\n\n /**\n * Set / read whether the picker is currently open.\n */\n @Prop({ reflect: true, mutable: true }) pickerOpen: boolean = false;\n\n @Watch('pickerOpen')\n handlePickerOpenChange() {\n this.dropdown.open = this.pickerOpen;\n }\n\n /**\n * Close the picker after a date is selected\n */\n @Prop() closeAfterPicked: boolean = true;\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop()\n get dropDownConfig() {\n return this._dropDownConfig;\n }\n set dropDownConfig(ddc: Partial<Dropdown>) {\n this._dropDownConfig = { ...this._dropDownConfig, ...ddc };\n }\n private _dropDownConfig: Partial<Dropdown> = {};\n\n /** @readonly get the value as a `Date` */\n @Prop()\n get dateValue() {\n return parseISODate(this.value);\n }\n\n /** Controls which days are disabled and therefore disallowed.\n * For example, this can be used to disallow selection of weekends. */\n @Prop() isDateDisabled: DateDisabledPredicate = () => false;\n\n // Event emitters\n\n /**\n * Event emitted when a date is selected.\n */\n @Event() nanoChange: EventEmitter<DateInputChangeEventDetail>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // Methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return await this.input.reportValidity(validateFirst);\n }\n\n /**\n * Sets focus on the child `nano-input`.\n */\n @Method()\n async setFocus() {\n if (this.input) this.input.setFocus();\n }\n\n /**\n * Returns the native `<input>` element used under the hood.\n */\n @Method()\n async getInputElement() {\n return await this.input.getInputElement();\n }\n\n /**\n * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (!this.input) return;\n this.input.showError(message);\n }\n\n // Event handlers\n\n private onInputChange = (\n e: CustomEvent & {\n target: HTMLInputElement;\n }\n ) => {\n e.stopPropagation();\n this.setValue(e.target.value);\n };\n\n private onInputValidate = (e: CustomEvent<ControlValidityEventDetail>) => {\n e.stopPropagation();\n this._invalid = !e.detail.isValid;\n this.nanoValidate.emit({\n isValid: e.detail.isValid,\n errorMessage: e.detail.errorMessage,\n originalEvent: e.detail.originalEvent,\n });\n };\n\n private onInputKey = () => {\n this.directInput = true;\n };\n\n private onDatePicked = (e: { detail: PickerChangeEvent }) => {\n this.directInput = false;\n this.value = e.detail.value;\n if (this.closeAfterPicked) this.pickerOpen = false;\n };\n\n private onDropdownHide = () => {\n setTimeout((_) => (this.pickerOpen = false), 200);\n setTimeout((_) => this.trigger.focus(), 50);\n };\n\n private onDropdownShow = () => {\n setTimeout((_) => {\n this.pickerEle.setFocus(false, this.pickerOpenSource === 'key');\n this.pickerOpenSource = null;\n }, 200);\n };\n\n private onTriggerClick = () => {\n if (!this.pickerOpen) {\n this.pickerOpen = true;\n this.pickerOpenSource = 'mouse';\n }\n };\n\n private onTriggerKey = (e: KeyboardEvent) => {\n if ([' ', 'Enter'].includes(e.key)) {\n if (!this.pickerOpen) {\n this.pickerOpen = true;\n this.pickerOpenSource = 'key';\n }\n }\n };\n\n private onCloseClick = () => {\n if (this.pickerOpen) this.pickerOpen = false;\n };\n\n private onCloseKeyDown = (e: KeyboardEvent) => {\n // this ensures focus is trapped inside the picker\n if (e.key === 'Tab' && e.shiftKey) {\n this.pickerEle.setFocus(true);\n e.preventDefault();\n }\n if (e.key === ' ' || e.key === 'Enter') {\n if (this.pickerOpen) this.pickerOpen = false;\n }\n };\n\n // Private logic\n\n // set the regexp input pattern and placeholder (if necessary)\n private setDatePattern() {\n let dateRegexOrdered = [];\n let dateStrOrd = [];\n Array.from(this.dateOrder).map((datepart, i) => {\n dateRegexOrdered.push(DateRegxps[datepart]);\n this.dateOrderIndeces[datepart] = i;\n dateStrOrd.push(datepart === 'y' ? 'yyyy' : datepart + datepart);\n });\n this.pattern = dateRegexOrdered.join('\\\\W+');\n\n if (!this.placeholder && this.placeholder !== 'false')\n this.placeholder = dateStrOrd.join(' ');\n }\n\n // set the public facing date string\n private formatIsoDate(isoDate: string) {\n let dateRegexOrdered = [];\n Array.from('ymd').map((datepart) =>\n dateRegexOrdered.push(DateRegxps[datepart])\n );\n const matches = isoDate.match(new RegExp(dateRegexOrdered.join('\\\\W+')));\n if (!matches) return '';\n\n let formatted = [];\n formatted[this.dateOrderIndeces.d] = matches[3];\n formatted[this.dateOrderIndeces.m] = matches[2];\n formatted[this.dateOrderIndeces.y] = matches[1];\n\n return formatted.join(' ');\n }\n\n // on manual user entry, set the value that will be sent with the form field\n private setValue(inputValue: string) {\n const matches = inputValue.match(new RegExp(this.pattern));\n\n // it's an invalid date, but we still need to set it\n if (!matches) {\n this.value = inputValue;\n return;\n }\n\n let date = createDate(\n matches[this.dateOrderIndeces.y + 1],\n matches[this.dateOrderIndeces.m + 1],\n matches[this.dateOrderIndeces.d + 1]\n );\n\n if (!date) {\n // last ditch attempt - see if the browser can get something\n date = new Date(inputValue);\n\n // it's definitely an invalid date, but set it anyway for validation messages\n if (!date) {\n this.value = inputValue;\n return;\n }\n }\n\n const dateStr = printISODate(date);\n this.value = dateStr;\n return dateStr;\n }\n\n connectedCallback() {\n this.setDatePattern();\n this.handleValueChange();\n }\n\n componentDidLoad() {\n if (!this.pickerCloseBtn || !this.picker) return;\n this.pickerEle.firstFocusEle = this.pickerCloseBtn;\n this.dropdown.tetherTo = this.trigger;\n setTimeout((_) => this.handlePickerOpenChange(), 300);\n }\n\n render() {\n this.locale =\n (navigator.languages as string[]) || navigator.language || undefined;\n\n this.dropDownConfig.placement =\n this.dropDownConfig.placement || 'bottom-end';\n\n if ((this.host.ownerDocument as Document).dir === 'rtl') {\n this.dropDownConfig.placement.replace('start', 'end');\n }\n if (this.trigger) this.dropDownConfig.tetherTo = this.trigger;\n\n const valueDate = parseISODate(this.value);\n const hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div class=\"date-field\">\n <nano-input\n class=\"date-field__input\"\n slot=\"trigger\"\n required={this.required || undefined}\n showInlineError={this.showInlineError}\n validateOn={this.validateOn}\n placeholder={\n this.placeholder !== 'false' ? this.placeholder : undefined\n }\n pattern={this.pattern}\n label={this.label}\n disabled={this.disabled || undefined}\n color={this.color || undefined}\n autofocus={this.autofocus || undefined}\n clearInput={this.clearInput || undefined}\n onNanoChange={this.onInputChange}\n onNanoInput={this.onInputKey}\n onNanoValidate={this.onInputValidate}\n name=\"\"\n form={this.form || undefined}\n size={this.size || undefined}\n readonly={this.readonly}\n value={this.inputValue}\n ref={(input) => (this.input = input)}\n floatLabel={this.floatLabel}\n hideLabel={this.hideLabel}\n inputmode={'numeric'}\n part=\"input\"\n >\n <slot name=\"start\" slot=\"start\" />\n <slot name=\"label\" />\n <slot name=\"end\" slot=\"end\" />\n {this.picker && [\n <button\n slot=\"end\"\n class=\"date-field__open\"\n type=\"button\"\n onKeyDown={this.onTriggerKey}\n onClick={this.onTriggerClick}\n ref={(trigger) => (this.trigger = trigger)}\n disabled={this.disabled || this.readonly}\n >\n <nano-icon name=\"light/calendar-alt\"></nano-icon>\n </button>,\n\n <nano-dropdown\n slot=\"end\"\n onNanoHide={this.onDropdownHide}\n onNanoShow={this.onDropdownShow}\n dialogTitle=\"Choose a date\"\n class=\"date-field__dropdown\"\n ref={(dropdown) => (this.dropdown = dropdown)}\n {...this.dropDownConfig}\n part=\"dropdown\"\n >\n <div>\n <div class=\"date-field__close-bar\">\n <button\n class=\"date-field__close\"\n type=\"button\"\n onMouseDown={this.onCloseClick}\n onKeyDown={this.onCloseKeyDown}\n ref={(pickerClose) => (this.pickerCloseBtn = pickerClose)}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n <span class=\"vhidden\">Close window</span>\n </button>\n </div>\n <nano-date-picker\n isDateDisabled={this.isDateDisabled}\n onNanoDatePicked={this.onDatePicked}\n min={this.min || undefined}\n max={this.max || undefined}\n is-modal={true}\n ref={(picker) => (this.pickerEle = picker)}\n localization={this.localization}\n selectedDate={this.value || this.initialPickerDate}\n firstDayOfWeek={this.firstDayOfWeek}\n color={this.color || undefined}\n part=\"date-picker\"\n ></nano-date-picker>\n </div>\n </nano-dropdown>,\n ]}\n {(hasHelperSlot || this.helperText || this.showInlineError) && (\n <span slot=\"helper\">\n <span class={{ vhidden: !!this.value.length }}>\n <slot name=\"helper\" />\n </span>\n {this.helperText && !!valueDate && (\n <span>\n {valueDate.toLocaleDateString(\n this.locale,\n this.helperTextFormat\n )}\n </span>\n )}\n </span>\n )}\n </nano-input>\n <input type=\"hidden\" value={this.value} name={this.name} />\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"date-input.js","sourceRoot":"","sources":["../../../src/components/date-input/date-input.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n h,\n Prop,\n Watch,\n State,\n Event,\n EventEmitter,\n Host,\n Method,\n} from '@stencil/core';\nimport {\n createDate,\n DaysOfWeek,\n printISODate,\n parseISODate,\n} from '../../utils/date-utils';\n\nimport {\n PickerChangeEvent,\n DateInputChangeEventDetail,\n Color,\n LocalDateOpts,\n DuetLocalizedText,\n ControlValidity,\n ControlValidityEventDetail,\n DateDisabledPredicate,\n} from '../../interface';\nimport { createColorClasses } from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\n\nconst DateRegxps = {\n d: '(\\\\d{1,2})',\n m: '(\\\\d{1,2})',\n y: '(\\\\d{4})',\n};\n\nlet inputIds = 0;\n\n/**\n * The date-input component combines `nano-dropdown`, `nano-input` and `nano-date-picker` components to make a fully featured date form field. It has specific options for localisation, date formatting and validation.\n *\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot start - input start slot\n * @slot end - input end slot\n */\n@Component({\n tag: 'nano-date-input',\n styleUrl: 'date-input.scss',\n scoped: true,\n})\nexport class DateInput implements ComponentInterface {\n private pickerEle!: HTMLNanoDatePickerElement;\n private trigger!: HTMLButtonElement;\n private pickerCloseBtn!: HTMLButtonElement;\n private dropdown!: HTMLNanoDropdownElement;\n private input: HTMLNanoInputElement;\n private pickerOpenSource: 'key' | 'mouse';\n\n private directInput = false;\n private dateOrderIndeces = { d: 0, m: 1, y: 3 };\n private inputId = `nano-input-${inputIds++}`;\n private locale =\n (window.navigator.languages as string[]) ||\n window.navigator.language ||\n undefined;\n\n @Element() host: HTMLNanoDateInputElement;\n\n // Private state\n\n @State() pattern!: string;\n @State() inputValue: string;\n\n // Public Api / Prop\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n if (!this.input) return '';\n return this.input.validityMessage;\n }\n\n /**\n * Whether to show a long form, confirmation date string of the one currently entered\n */\n @Prop() helperText: boolean = true;\n\n /**\n * Options for the date string display. Refer to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString.\n */\n @Prop() helperTextFormat: LocalDateOpts = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop() readonly = false;\n\n /**\n * The initial size (number of characters) of the control.\n */\n @Prop() size?: number;\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * Which day is considered first day of the week? `0` for Sunday, `1` for Monday, etc.\n * Default is Monday.\n */\n @Prop() firstDayOfWeek?: DaysOfWeek;\n\n /**\n * Button labels, day names, month names, etc, used for localization.\n * Default is English.\n */\n @Prop() localization?: DuetLocalizedText;\n\n /**\n * If `true`, the user cannot interact with the input.\n */\n @Prop() disabled = false;\n\n /**\n * The color to use from the application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.\n */\n @Prop() clearInput = false;\n\n /**\n * String to place within a label element. Alternatively you may use a label slot.\n */\n @Prop() label?: string;\n\n /**\n * Instructional text that shows before the input has a value.\n * The pattern prop will be used to create a placeholder automatically if unused.\n */\n @Prop({ mutable: true }) placeholder: string;\n\n /**\n * Current value. Must be in IS0-8601 format: YYYY-MM-DD.\n */\n @Prop({ reflect: true, mutable: true }) value: string = '';\n\n @Watch('value')\n handleValueChange() {\n if (!this.directInput) this.inputValue = this.formatIsoDate(this.value);\n setTimeout(() => {\n this.nanoChange.emit({\n value: this.value,\n date: parseISODate(this.value),\n });\n }, 20);\n this.directInput = false;\n }\n\n /**\n * When should the field perform validation\n */\n @Prop() validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * The order of the date parts for entry and display.\n * e.g. dmy = dd mm yyyy\n */\n @Prop() dateOrder: 'dmy' | 'mdy' | 'ymd' | 'dym' = 'dmy';\n\n @Watch('dateOrder')\n handleDateOrderChange() {\n this.setDatePattern();\n }\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the max property.\n */\n @Prop() min?: string;\n\n /**\n * Maximum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the min property.\n */\n @Prop() max?: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n @Watch('min')\n @Watch('max')\n @Watch('value')\n testDateValidity() {\n const valueDate = parseISODate(this.value);\n\n let min: Date,\n max: Date,\n error: string = '';\n\n if (this.value && valueDate) {\n if (this.min && (min = parseISODate(this.min)) && valueDate < min) {\n error =\n 'Date below the minimum: ' +\n min.toLocaleDateString(this.locale, this.helperTextFormat);\n }\n if (this.max && (max = parseISODate(this.max)) && valueDate > max) {\n error =\n 'Date above the maximum: ' +\n max.toLocaleDateString(this.locale, this.helperTextFormat);\n }\n if (this.isDateDisabled(valueDate)) {\n error = 'Date selected is disabled.';\n }\n }\n\n requestAnimationFrame(async (_) => {\n if (!this.input) return;\n const input = await this.input.getInputElement();\n if (this.value.length && !valueDate) error = 'Please enter a valid date';\n\n input.setCustomValidity(error);\n if (this.input.validateOn === 'dirty') {\n this.input.showError(error);\n }\n });\n }\n\n /**\n * Show a date picker. Date pickers are not very useful\n * if the potential input is too far in the distance or past\n * e.g. Birthdays\n */\n @Prop() picker: boolean = true;\n\n /**\n * Initial picker date. Will be to `value` if set. Will be today's date if nothing set.\n * Must be in IS0-8601 format: YYYY-MM-DD.\n */\n @Prop() initialPickerDate?: string;\n\n /**\n * Set / read whether the picker is currently open.\n */\n @Prop({ reflect: true, mutable: true }) pickerOpen: boolean = false;\n\n @Watch('pickerOpen')\n handlePickerOpenChange() {\n this.dropdown.open = this.pickerOpen;\n }\n\n /**\n * Close the picker after a date is selected\n */\n @Prop() closeAfterPicked: boolean = true;\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop()\n get dropDownConfig() {\n return this._dropDownConfig;\n }\n set dropDownConfig(ddc: Partial<Dropdown>) {\n this._dropDownConfig = { ...this._dropDownConfig, ...ddc };\n }\n private _dropDownConfig: Partial<Dropdown> = {};\n\n /** @readonly get the value as a `Date` */\n @Prop()\n get dateValue() {\n return parseISODate(this.value);\n }\n\n /** Controls which days are disabled and therefore disallowed.\n * For example, this can be used to disallow selection of weekends. */\n @Prop() isDateDisabled: DateDisabledPredicate = () => false;\n\n // Event emitters\n\n /**\n * Event emitted when a date is selected.\n */\n @Event() nanoChange: EventEmitter<DateInputChangeEventDetail>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // Methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n const initValidity = await this.input.reportValidity(validateFirst);\n if (initValidity.isValid && validateFirst) this.testDateValidity();\n return await this.input.reportValidity(validateFirst);\n }\n\n /**\n * Sets focus on the child `nano-input`.\n */\n @Method()\n async setFocus() {\n if (this.input) this.input.setFocus();\n }\n\n /**\n * Returns the native `<input>` element used under the hood.\n */\n @Method()\n async getInputElement() {\n return await this.input.getInputElement();\n }\n\n /**\n * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (!this.input) return;\n this.input.showError(message);\n }\n\n // Event handlers\n\n private onInputChange = (\n e: CustomEvent & {\n target: HTMLInputElement;\n }\n ) => {\n e.stopPropagation();\n this.setValue(e.target.value);\n };\n\n private onInputValidate = (e: CustomEvent<ControlValidityEventDetail>) => {\n e.stopPropagation();\n this._invalid = !e.detail.isValid;\n\n this.nanoValidate.emit({\n isValid: e.detail.isValid,\n errorMessage: e.detail.errorMessage,\n originalEvent: e.detail.originalEvent,\n });\n };\n\n private onInputKey = () => {\n this.directInput = true;\n };\n\n private onDatePicked = (e: { detail: PickerChangeEvent }) => {\n this.directInput = false;\n this.value = e.detail.value;\n if (this.closeAfterPicked) this.pickerOpen = false;\n };\n\n private onDropdownHide = () => {\n setTimeout((_) => (this.pickerOpen = false), 200);\n setTimeout((_) => this.trigger.focus(), 50);\n };\n\n private onDropdownShow = () => {\n setTimeout((_) => {\n this.pickerEle.setFocus(false, this.pickerOpenSource === 'key');\n this.pickerOpenSource = null;\n }, 200);\n };\n\n private onTriggerClick = () => {\n if (!this.pickerOpen) {\n this.pickerOpen = true;\n this.pickerOpenSource = 'mouse';\n }\n };\n\n private onTriggerKey = (e: KeyboardEvent) => {\n if ([' ', 'Enter'].includes(e.key)) {\n if (!this.pickerOpen) {\n this.pickerOpen = true;\n this.pickerOpenSource = 'key';\n }\n }\n };\n\n private onCloseClick = () => {\n if (this.pickerOpen) this.pickerOpen = false;\n };\n\n private onCloseKeyDown = (e: KeyboardEvent) => {\n // this ensures focus is trapped inside the picker\n if (e.key === 'Tab' && e.shiftKey) {\n this.pickerEle.setFocus(true);\n e.preventDefault();\n }\n if (e.key === ' ' || e.key === 'Enter') {\n if (this.pickerOpen) this.pickerOpen = false;\n }\n };\n\n // Private logic\n\n // set the regexp input pattern and placeholder (if necessary)\n private setDatePattern() {\n let dateRegexOrdered = [];\n let dateStrOrd = [];\n Array.from(this.dateOrder).map((datepart, i) => {\n dateRegexOrdered.push(DateRegxps[datepart]);\n this.dateOrderIndeces[datepart] = i;\n dateStrOrd.push(datepart === 'y' ? 'yyyy' : datepart + datepart);\n });\n this.pattern = dateRegexOrdered.join('\\\\W+');\n\n if (!this.placeholder && this.placeholder !== 'false')\n this.placeholder = dateStrOrd.join(' ');\n }\n\n // set the public facing date string\n private formatIsoDate(isoDate: string) {\n let dateRegexOrdered = [];\n Array.from('ymd').map((datepart) =>\n dateRegexOrdered.push(DateRegxps[datepart])\n );\n const matches = isoDate.match(new RegExp(dateRegexOrdered.join('\\\\W+')));\n if (!matches) return '';\n\n let formatted = [];\n formatted[this.dateOrderIndeces.d] = matches[3];\n formatted[this.dateOrderIndeces.m] = matches[2];\n formatted[this.dateOrderIndeces.y] = matches[1];\n\n return formatted.join(' ');\n }\n\n // on manual user entry, set the value that will be sent with the form field\n private setValue(inputValue: string) {\n const matches = inputValue.match(new RegExp(this.pattern));\n\n // it's an invalid date, but we still need to set it\n if (!matches) {\n this.value = inputValue;\n return;\n }\n\n let date = createDate(\n matches[this.dateOrderIndeces.y + 1],\n matches[this.dateOrderIndeces.m + 1],\n matches[this.dateOrderIndeces.d + 1]\n );\n\n if (!date) {\n // last ditch attempt - see if the browser can get something\n date = new Date(inputValue);\n\n // it's definitely an invalid date, but set it anyway for validation messages\n if (!date) {\n this.value = inputValue;\n return;\n }\n }\n\n const dateStr = printISODate(date);\n this.value = dateStr;\n return dateStr;\n }\n\n connectedCallback() {\n this.setDatePattern();\n this.handleValueChange();\n }\n\n componentDidLoad() {\n if (!this.pickerCloseBtn || !this.picker) return;\n this.pickerEle.firstFocusEle = this.pickerCloseBtn;\n this.dropdown.tetherTo = this.trigger;\n setTimeout((_) => this.handlePickerOpenChange(), 300);\n }\n\n render() {\n this.locale =\n (navigator.languages as string[]) || navigator.language || undefined;\n\n this.dropDownConfig.placement =\n this.dropDownConfig.placement || 'bottom-end';\n\n if ((this.host.ownerDocument as Document).dir === 'rtl') {\n this.dropDownConfig.placement.replace('start', 'end');\n }\n if (this.trigger) this.dropDownConfig.tetherTo = this.trigger;\n\n const valueDate = parseISODate(this.value);\n const hasHelperSlot = !!this.host.querySelector('[slot=\"helper\"]');\n\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div class=\"date-field\">\n <nano-input\n class=\"date-field__input\"\n slot=\"trigger\"\n required={this.required || undefined}\n showInlineError={this.showInlineError}\n validateOn={this.validateOn}\n placeholder={\n this.placeholder !== 'false' ? this.placeholder : undefined\n }\n pattern={this.pattern}\n label={this.label}\n disabled={this.disabled || undefined}\n color={this.color || undefined}\n autofocus={this.autofocus || undefined}\n clearInput={this.clearInput || undefined}\n onNanoChange={this.onInputChange}\n onNanoInput={this.onInputKey}\n onNanoValidate={this.onInputValidate}\n name=\"\"\n form={this.form || undefined}\n size={this.size || undefined}\n readonly={this.readonly}\n value={this.inputValue}\n ref={(input) => (this.input = input)}\n floatLabel={this.floatLabel}\n hideLabel={this.hideLabel}\n inputmode={'numeric'}\n part=\"input\"\n >\n <slot name=\"start\" slot=\"start\" />\n <slot name=\"label\" />\n <slot name=\"end\" slot=\"end\" />\n {this.picker && [\n <button\n slot=\"end\"\n class=\"date-field__open\"\n type=\"button\"\n onKeyDown={this.onTriggerKey}\n onClick={this.onTriggerClick}\n ref={(trigger) => (this.trigger = trigger)}\n disabled={this.disabled || this.readonly}\n >\n <nano-icon name=\"light/calendar-alt\"></nano-icon>\n </button>,\n\n <nano-dropdown\n slot=\"end\"\n onNanoHide={this.onDropdownHide}\n onNanoShow={this.onDropdownShow}\n dialogTitle=\"Choose a date\"\n class=\"date-field__dropdown\"\n ref={(dropdown) => (this.dropdown = dropdown)}\n {...this.dropDownConfig}\n part=\"dropdown\"\n >\n <div>\n <div class=\"date-field__close-bar\">\n <button\n class=\"date-field__close\"\n type=\"button\"\n onMouseDown={this.onCloseClick}\n onKeyDown={this.onCloseKeyDown}\n ref={(pickerClose) => (this.pickerCloseBtn = pickerClose)}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n <span class=\"vhidden\">Close window</span>\n </button>\n </div>\n <nano-date-picker\n isDateDisabled={this.isDateDisabled}\n onNanoDatePicked={this.onDatePicked}\n min={this.min || undefined}\n max={this.max || undefined}\n is-modal={true}\n ref={(picker) => (this.pickerEle = picker)}\n localization={this.localization}\n selectedDate={this.value || this.initialPickerDate}\n firstDayOfWeek={this.firstDayOfWeek}\n color={this.color || undefined}\n part=\"date-picker\"\n ></nano-date-picker>\n </div>\n </nano-dropdown>,\n ]}\n {(hasHelperSlot || this.helperText || this.showInlineError) && (\n <span slot=\"helper\">\n <span class={{ vhidden: !!this.value.length }}>\n <slot name=\"helper\" />\n </span>\n {this.helperText && !!valueDate && (\n <span>\n {valueDate.toLocaleDateString(\n this.locale,\n this.helperTextFormat\n )}\n </span>\n )}\n </span>\n )}\n </nano-input>\n <input type=\"hidden\" value={this.value} name={this.name} />\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -370,7 +370,7 @@ export class DatePicker {
370
370
  "references": {
371
371
  "DaysOfWeek": {
372
372
  "location": "import",
373
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/utils/date-utils.ts"
373
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/utils/date-utils.ts"
374
374
  }
375
375
  }
376
376
  },
@@ -395,7 +395,7 @@ export class DatePicker {
395
395
  "references": {
396
396
  "DuetLocalizedText": {
397
397
  "location": "import",
398
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
398
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
399
399
  }
400
400
  }
401
401
  },
@@ -418,7 +418,7 @@ export class DatePicker {
418
418
  "references": {
419
419
  "Color": {
420
420
  "location": "import",
421
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
421
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
422
422
  }
423
423
  }
424
424
  },
@@ -442,7 +442,7 @@ export class DatePicker {
442
442
  "references": {
443
443
  "DateDisabledPredicate": {
444
444
  "location": "import",
445
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
445
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
446
446
  }
447
447
  }
448
448
  },
@@ -521,7 +521,7 @@ export class DatePicker {
521
521
  "references": {
522
522
  "PickerChangeEvent": {
523
523
  "location": "import",
524
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
524
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
525
525
  }
526
526
  }
527
527
  }
@@ -238,7 +238,7 @@ export class Details {
238
238
  "references": {
239
239
  "Color": {
240
240
  "location": "import",
241
- "path": "/builds/78sSozaT/0/Digital/nano-components/packages/components/src/interface.d.ts"
241
+ "path": "/builds/VuwsCczH/0/Digital/nano-components/packages/components/src/interface.d.ts"
242
242
  }
243
243
  }
244
244
  },