@internetarchive/histogram-date-range 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/.editorconfig +29 -29
  2. package/.eslintrc.js +14 -14
  3. package/.github/workflows/ci.yml +30 -26
  4. package/LICENSE +661 -661
  5. package/README.md +113 -113
  6. package/demo/index.css +22 -22
  7. package/demo/index.html +159 -159
  8. package/dist/demo/app-root.d.ts +19 -0
  9. package/dist/demo/app-root.js +58 -0
  10. package/dist/demo/app-root.js.map +1 -0
  11. package/dist/demo/js/app-root.d.ts +19 -19
  12. package/dist/demo/js/app-root.js +46 -46
  13. package/dist/docs/_snowpack/pkg/@internetarchive/ia-activity-indicator/ia-activity-indicator.d.ts +1 -0
  14. package/dist/docs/_snowpack/pkg/@internetarchive/ia-activity-indicator/ia-activity-indicator.js +2 -0
  15. package/dist/docs/_snowpack/pkg/@internetarchive/ia-activity-indicator/ia-activity-indicator.js.map +1 -0
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/src/histogram-date-range.d.ts +159 -159
  20. package/dist/src/histogram-date-range.js +846 -853
  21. package/dist/src/histogram-date-range.js.map +1 -1
  22. package/dist/test/histogram-date-range.test.d.ts +1 -1
  23. package/dist/test/histogram-date-range.test.js +488 -488
  24. package/dist/test/histogram-date-range.test.js.map +1 -1
  25. package/docs/_snowpack/pkg/@internetarchive/{ia-activity-indicator/ia-activity-indicator.js → ia-activity-indicator.js} +193 -168
  26. package/docs/_snowpack/pkg/common/lit-element-4616b61d.js +22 -0
  27. package/docs/_snowpack/pkg/common/lit-html-a4f3a51c.js +8 -0
  28. package/docs/_snowpack/pkg/common/query-assigned-elements-61aefe32.js +21 -0
  29. package/docs/_snowpack/pkg/dayjs/esm/plugin/customParseFormat.js +355 -0
  30. package/docs/_snowpack/pkg/dayjs/esm.js +631 -0
  31. package/docs/_snowpack/pkg/import-map.json +3 -1
  32. package/docs/_snowpack/pkg/lit/decorators.js +4 -21
  33. package/docs/_snowpack/pkg/lit/directives/live.js +3 -3
  34. package/docs/_snowpack/pkg/lit.js +2 -2
  35. package/docs/demo/index.css +22 -22
  36. package/docs/demo/index.html +159 -159
  37. package/docs/dist/src/histogram-date-range.js +5 -5
  38. package/index.ts +1 -1
  39. package/package.json +85 -84
  40. package/snowpack.config.js +10 -10
  41. package/src/histogram-date-range.ts +914 -922
  42. package/test/histogram-date-range.test.ts +684 -684
  43. package/tsconfig.json +21 -21
  44. package/web-dev-server.config.mjs +28 -28
  45. package/web-test-runner.config.mjs +29 -29
  46. package/docs/_snowpack/pkg/common/lit-element-2ebaea62.js +0 -22
  47. package/docs/_snowpack/pkg/common/lit-html-ab4365d1.js +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"histogram-date-range.test.js","sourceRoot":"","sources":["../../test/histogram-date-range.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, oneEvent, aTimeout } from '@open-wc/testing';\r\n\r\nimport { HistogramDateRange } from '../src/histogram-date-range';\r\nimport '../src/histogram-date-range';\r\n\r\nconst SLIDER_WIDTH = 10;\r\nconst WIDTH = 200;\r\n\r\nconst subject = html`\r\n <histogram-date-range\r\n width=\"${WIDTH}\"\r\n tooltipWidth=\"140\"\r\n height=\"50\"\r\n dateFormat=\"M/D/YYYY\"\r\n minDate=\"1900\"\r\n maxDate=\"12/4/2020\"\r\n bins=\"[33, 1, 100]\"\r\n >\r\n </histogram-date-range>\r\n`;\r\n\r\nasync function createCustomElementInHTMLContainer(): Promise<HistogramDateRange> {\r\n document.head.insertAdjacentHTML(\r\n 'beforeend',\r\n `<style>\r\n html {\r\n font-size:10px;\r\n }\r\n .container {\r\n width: 400px;\r\n height: 400px;\r\n display: flex;\r\n background: #FFF6E1;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n </style>`\r\n );\r\n // https://open-wc.org/docs/testing/helpers/#customize-the-fixture-container\r\n const parentNode = document.createElement('div');\r\n parentNode.setAttribute('class', 'container');\r\n return fixture<HistogramDateRange>(subject, { parentNode });\r\n}\r\n\r\ndescribe('HistogramDateRange', () => {\r\n it('shows scaled histogram bars when provided with data', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n const bars = el.shadowRoot?.querySelectorAll(\r\n '.bar'\r\n ) as unknown as SVGRectElement[];\r\n const heights = Array.from(bars).map(b => b.height.baseVal.value);\r\n\r\n expect(heights).to.eql([38, 7, 50]);\r\n });\r\n\r\n it('changes the position of the sliders and standardizes date format when dates are entered', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n\r\n /* -------------------------- minimum (left) slider ------------------------- */\r\n expect(el.minSliderX).to.eq(SLIDER_WIDTH);\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n\r\n const pressEnterEvent = new KeyboardEvent('keyup', {\r\n key: 'Enter',\r\n });\r\n\r\n // valid min date\r\n minDateInput.value = '1950';\r\n minDateInput.dispatchEvent(pressEnterEvent);\r\n\r\n expect(Math.floor(el.minSliderX)).to.eq(84);\r\n expect(el.minSelectedDate).to.eq('1/1/1950'); // set to correct format\r\n\r\n // attempt to set date earlier than first item\r\n minDateInput.value = '10/1/1850';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n\r\n expect(Math.floor(el.minSliderX)).to.eq(SLIDER_WIDTH); // leftmost valid position\r\n // allow date value less than slider range\r\n expect(el.minSelectedDate).to.eq('10/1/1850');\r\n\r\n /* -------------------------- maximum (right) slider ------------------------- */\r\n expect(el.maxSliderX).to.eq(WIDTH - SLIDER_WIDTH);\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n\r\n // set valid max date\r\n maxDateInput.value = '3/12/1975';\r\n maxDateInput.dispatchEvent(pressEnterEvent);\r\n\r\n expect(Math.floor(el.maxSliderX)).to.eq(121);\r\n expect(maxDateInput.value).to.eq('3/12/1975');\r\n\r\n // attempt to set date later than last item\r\n maxDateInput.value = '12/31/2199';\r\n maxDateInput.dispatchEvent(new Event('blur'));\r\n await el.updateComplete;\r\n\r\n expect(el.maxSliderX).to.eq(WIDTH - SLIDER_WIDTH); // rightmost valid position\r\n // allow date value greater than slider range\r\n expect(maxDateInput.value).to.eq('12/31/2199');\r\n });\r\n\r\n it('when updateWhileFocused option is true, updates are fired upon changing input focus', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n el.updateWhileFocused = true;\r\n await el.updateComplete;\r\n\r\n let updateEventFired = false;\r\n el.addEventListener(\r\n 'histogramDateRangeUpdated',\r\n () => (updateEventFired = true)\r\n );\r\n\r\n /* -------------------------- minimum (left) slider ------------------------- */\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n\r\n /* -------------------------- maximum (right) slider ------------------------- */\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n\r\n minDateInput.focus();\r\n\r\n // set valid min date, but don't hit Enter -- just switch focus to the max date input\r\n minDateInput.value = '1950';\r\n maxDateInput.focus();\r\n await el.updateComplete;\r\n await aTimeout(0);\r\n\r\n // update event should have fired, setting the minSelectedDate prop & slider position accordingly\r\n expect(updateEventFired).to.be.true;\r\n expect(Math.floor(el.minSliderX)).to.eq(84);\r\n expect(el.minSelectedDate).to.eq('1/1/1950');\r\n\r\n updateEventFired = false;\r\n await el.updateComplete;\r\n\r\n // set valid max date, but don't hit Enter -- just switch focus to the min date input\r\n maxDateInput.value = '3/12/1975';\r\n minDateInput.focus();\r\n await el.updateComplete;\r\n await aTimeout(0);\r\n\r\n // update event should have fired, setting the maxSelectedDate prop & slider position accordingly\r\n expect(updateEventFired).to.be.true;\r\n expect(Math.floor(el.maxSliderX)).to.eq(121);\r\n expect(el.maxSelectedDate).to.eq('3/12/1975');\r\n });\r\n\r\n it('when updateWhileFocused option is false (default), updates are not fired while one of the inputs remains focused', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n\r\n let updateEventFired = false;\r\n el.addEventListener(\r\n 'histogramDateRangeUpdated',\r\n () => (updateEventFired = true)\r\n );\r\n\r\n /* -------------------------- minimum (left) slider ------------------------- */\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n\r\n /* -------------------------- maximum (right) slider ------------------------- */\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n\r\n minDateInput.focus();\r\n\r\n // set valid min date, but don't hit Enter -- just switch focus to the max date input\r\n minDateInput.value = '1950';\r\n maxDateInput.focus();\r\n await el.updateComplete;\r\n await aTimeout(0);\r\n\r\n // update event should NOT have fired, because focus remains within the inputs\r\n expect(updateEventFired).to.be.false;\r\n\r\n // set valid max date, but don't hit Enter -- just switch focus to the min date input\r\n maxDateInput.value = '3/12/1975';\r\n minDateInput.focus();\r\n await el.updateComplete;\r\n await aTimeout(0);\r\n\r\n // update event should NOT have fired, because focus remains within the inputs\r\n expect(updateEventFired).to.be.false;\r\n });\r\n\r\n it('handles invalid date inputs', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n\r\n /* -------------------------- minimum (left) slider ------------------------- */\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n\r\n minDateInput.value = '5/17/1961';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n await el.updateComplete;\r\n\r\n expect(Math.floor(el.minSliderX)).to.eq(101);\r\n expect(minDateInput.value).to.eq('5/17/1961');\r\n\r\n // enter invalid value\r\n minDateInput.value = 'invalid';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n await el.updateComplete;\r\n\r\n expect(Math.floor(el.minSliderX)).to.eq(101); // does not move\r\n expect(minDateInput.value).to.eq('5/17/1961'); // resets back to previous date\r\n\r\n /* -------------------------- maximum (right) slider ------------------------- */\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n\r\n // initial values\r\n expect(el.maxSliderX).to.eq(WIDTH - SLIDER_WIDTH);\r\n expect(maxDateInput.value).to.eq('12/4/2020');\r\n\r\n // enter invalid value\r\n maxDateInput.value = 'Abc 12, 1YYY';\r\n maxDateInput.dispatchEvent(new Event('blur'));\r\n await el.updateComplete;\r\n\r\n expect(Math.floor(el.maxSliderX)).to.eq(WIDTH - SLIDER_WIDTH); // does not move\r\n expect(maxDateInput.value).to.eq('12/4/2020'); // resets back to previous date\r\n });\r\n\r\n it('updates the date inputs when the sliders are moved', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n\r\n /* -------------------------- minimum (left) slider ------------------------- */\r\n const minSlider = el.shadowRoot?.querySelector('#slider-min') as SVGElement;\r\n const container = el.shadowRoot?.querySelector(\r\n '#container'\r\n ) as HTMLDivElement;\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n\r\n // initial state\r\n expect(minSlider.getBoundingClientRect().x).to.eq(108);\r\n expect(Array.from(minSlider.classList).join(' ')).to.eq('draggable');\r\n\r\n // pointer down\r\n minSlider.dispatchEvent(new PointerEvent('pointerdown'));\r\n await el.updateComplete;\r\n\r\n // cursor changes to 'grab'\r\n const classList = minSlider.classList;\r\n expect(classList.contains('draggable')).to.be.true;\r\n expect(classList.contains('dragging')).to.be.true;\r\n\r\n // slide to right\r\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 60 }));\r\n await el.updateComplete;\r\n\r\n // slider has moved\r\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(168);\r\n // min date is updated\r\n expect(minDateInput.value).to.eq('4/23/1940');\r\n\r\n // stop dragging\r\n window.dispatchEvent(new PointerEvent('pointerup'));\r\n await el.updateComplete;\r\n\r\n // cursor returns to normal\r\n expect(Array.from(container.classList)).not.to.include('dragging');\r\n\r\n /* -------------------------- maximum (right) slider ------------------------- */\r\n const maxSlider = el.shadowRoot?.querySelector('#slider-max') as SVGElement;\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n\r\n // initial state\r\n expect(maxSlider.getBoundingClientRect().x).to.eq(298);\r\n\r\n // slide to left\r\n maxSlider.dispatchEvent(new PointerEvent('pointerdown', { clientX: 195 }));\r\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 165 }));\r\n await el.updateComplete;\r\n\r\n // slider has moved\r\n expect(Math.round(maxSlider.getBoundingClientRect().x)).to.eq(268);\r\n // max date is updated\r\n expect(maxDateInput.value).to.eq('10/8/2000');\r\n await el.updateComplete;\r\n\r\n // try to slide min slider past max slider\r\n minSlider.dispatchEvent(new PointerEvent('pointerdown', { clientX: 62 }));\r\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 190 }));\r\n await el.updateComplete;\r\n\r\n // slider moves all the way to meet the right slider\r\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(258);\r\n\r\n // try to slide max slider past min slider\r\n maxSlider.dispatchEvent(new PointerEvent('pointerdown', { clientX: 120 }));\r\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 50 }));\r\n await el.updateComplete;\r\n expect(Math.round(maxSlider.getBoundingClientRect().x)).to.eq(268); // max slider didn't move\r\n });\r\n\r\n it(\"emits a custom event when the element's date range changes\", async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n el.updateDelay = 30; // set debounce delay of 30ms\r\n\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n const updateEventPromise = oneEvent(el, 'histogramDateRangeUpdated');\r\n\r\n // simulate typing a new value into input\r\n minDateInput.value = '1955';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n\r\n // will wait longer than debounce delay\r\n const { detail } = await updateEventPromise;\r\n // verify that event is emitted\r\n expect(detail.minDate).to.equal('1/1/1955');\r\n expect(detail.maxDate).to.equal('12/4/2020');\r\n\r\n let eventCount = 0;\r\n el.addEventListener('histogramDateRangeUpdated', () => (eventCount += 1));\r\n\r\n // events are not sent if no change since the last event that was sent\r\n minDateInput.value = '1955';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n await aTimeout(60); // wait longer than debounce delay\r\n expect(eventCount).to.equal(0);\r\n\r\n const updateEventPromise2 = oneEvent(el, 'histogramDateRangeUpdated');\r\n\r\n // with the debounce, multiple quick changes only result in one event sent\r\n minDateInput.value = '1965';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n await aTimeout(10); // wait less than the debounce delay\r\n\r\n minDateInput.dispatchEvent(new Event('focus'));\r\n minDateInput.value = '1975';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n await aTimeout(10);\r\n\r\n minDateInput.dispatchEvent(new Event('focus'));\r\n minDateInput.value = '1985';\r\n minDateInput.dispatchEvent(new Event('blur'));\r\n await aTimeout(10);\r\n\r\n const event2 = await updateEventPromise2;\r\n expect(event2.detail.minDate).to.equal('1/1/1985');\r\n expect(eventCount).to.equal(1); // only one event was fired\r\n });\r\n\r\n it('shows/hides tooltip when hovering over (or pointing at) a bar', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n // include a number which will require commas (1,000,000)\r\n el.bins = [1000000, 1, 100];\r\n await aTimeout(10);\r\n const bars = el.shadowRoot?.querySelectorAll(\r\n '.bar'\r\n ) as unknown as SVGRectElement[];\r\n const tooltip = el.shadowRoot?.querySelector('#tooltip') as HTMLDivElement;\r\n expect(tooltip.innerText).to.eq('');\r\n\r\n // hover\r\n bars[0].dispatchEvent(new PointerEvent('pointerenter'));\r\n await el.updateComplete;\r\n expect(tooltip.innerText).to.match(\r\n /^1,000,000 items\\n1\\/1\\/1900 - 4\\/23\\/1940/\r\n );\r\n expect(getComputedStyle(tooltip).display).to.eq('block');\r\n\r\n // leave\r\n bars[0].dispatchEvent(new PointerEvent('pointerleave'));\r\n await el.updateComplete;\r\n expect(getComputedStyle(tooltip).display).to.eq('none');\r\n expect(tooltip.innerText).to.eq('');\r\n\r\n // ensure singular item is not pluralized\r\n bars[1].dispatchEvent(new PointerEvent('pointerenter'));\r\n await el.updateComplete;\r\n expect(tooltip.innerText).to.match(/^1 item\\n4\\/23\\/1940 - 8\\/13\\/1980/);\r\n });\r\n\r\n it('does not show tooltip while dragging', async () => {\r\n const el = await createCustomElementInHTMLContainer();\r\n const bars = el.shadowRoot?.querySelectorAll(\r\n '.bar'\r\n ) as unknown as SVGRectElement[];\r\n const tooltip = el.shadowRoot?.querySelector('#tooltip') as HTMLDivElement;\r\n expect(tooltip.innerText).to.eq('');\r\n const minSlider = el.shadowRoot?.querySelector('#slider-min') as SVGElement;\r\n\r\n // pointer down and slide right\r\n minSlider.dispatchEvent(new PointerEvent('pointerdown'));\r\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 100 }));\r\n await el.updateComplete;\r\n\r\n // hover over bar\r\n bars[0].dispatchEvent(new PointerEvent('pointerenter'));\r\n await el.updateComplete;\r\n // tooltip display is suppressed while dragging\r\n expect(tooltip.style.display).to.eq('');\r\n });\r\n\r\n it('passes the a11y audit', async () => {\r\n await fixture<HistogramDateRange>(subject).then(el =>\r\n expect(el).shadowDom.to.be.accessible()\r\n );\r\n });\r\n\r\n it('allows range to be pre-selected', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"Dec 4, 2020\"\r\n minSelectedDate=\"2012\"\r\n maxSelectedDate=\"2019\"\r\n bins=\"[33, 1, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n expect(minDateInput.value).to.eq('2012');\r\n\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n expect(maxDateInput.value).to.eq('2019');\r\n });\r\n\r\n it('extends the selected range when the histogram is clicked outside of the current range', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"2020\"\r\n minSelectedDate=\"1950\"\r\n maxSelectedDate=\"1955\"\r\n bins=\"[33, 1, 1, 1, 10, 10, 1, 1, 1, 50, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n\r\n const leftBarToClick = Array.from(\r\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\r\n )[1]; // click on second bar to the left\r\n\r\n leftBarToClick.dispatchEvent(new Event('click'));\r\n await el.updateComplete;\r\n expect(el.minSelectedDate).to.eq('1910'); // range was extended to left\r\n\r\n const rightBarToClick = Array.from(\r\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\r\n )[8]; // click on second bar from the right\r\n\r\n rightBarToClick.dispatchEvent(new Event('click'));\r\n expect(el.maxSelectedDate).to.eq('1998'); // range was extended to right\r\n });\r\n\r\n it('narrows the selected range when the histogram is clicked inside of the current range', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"2020\"\r\n minSelectedDate=\"1900\"\r\n maxSelectedDate=\"2020\"\r\n bins=\"[33, 1, 1, 1, 10, 10, 1, 1, 1, 50, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n\r\n ///////////////////////////////////////////////\r\n // NB: the slider nearest the clicked bar moves\r\n ///////////////////////////////////////////////\r\n\r\n const leftBarToClick = Array.from(\r\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\r\n )[3]; // click on fourth bar to the left\r\n\r\n leftBarToClick.dispatchEvent(new Event('click'));\r\n expect(el.minSelectedDate).to.eq('1932'); // range was extended to the right\r\n\r\n const rightBarToClick = Array.from(\r\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\r\n )[8]; // click on second bar from the right\r\n\r\n rightBarToClick.dispatchEvent(new Event('click'));\r\n expect(el.maxSelectedDate).to.eq('1998'); // range was extended to the left\r\n });\r\n\r\n it('handles invalid pre-selected range by defaulting to overall max and min', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"2020\"\r\n minSelectedDate=\"2000xyz\"\r\n maxSelectedDate=\"5000\"\r\n bins=\"[33, 1, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n // malformed min date defaults to overall min\r\n expect(minDateInput.value).to.eq('1900');\r\n\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n // well-formed max date is allowed\r\n expect(maxDateInput.value).to.eq('5000');\r\n });\r\n\r\n it('handles year values less than 1000 by overriding date format to just display year', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n dateFormat=\"M/D/YYYY\"\r\n minDate=\"-2000\"\r\n maxDate=\"2000\"\r\n minSelectedDate=\"-500\"\r\n maxSelectedDate=\"500\"\r\n bins=\"[33, 1, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n expect(minDateInput.value).to.eq('-500');\r\n\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n expect(maxDateInput.value).to.eq('500');\r\n });\r\n\r\n it('handles missing data', async () => {\r\n let el = await fixture<HistogramDateRange>(\r\n html`<histogram-date-range>\r\n minDate=\"1900\" maxDate=\"2020\" bins=\"\"\r\n </histogram-date-range>`\r\n );\r\n expect(el.shadowRoot?.innerHTML).to.contain('no data');\r\n el = await fixture<HistogramDateRange>(\r\n html`<histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"2020\"\r\n bins=\"[]\"\r\n missingDataMessage=\"no data available\"\r\n ></histogram-date-range>`\r\n );\r\n expect(el.shadowRoot?.innerHTML).to.contain('no data available');\r\n });\r\n\r\n it('correctly displays data consisting of a single bin', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range minDate=\"2020\" maxDate=\"2020\" bins=\"[50]\">\r\n </histogram-date-range>\r\n `\r\n );\r\n const bars = el.shadowRoot?.querySelectorAll(\r\n '.bar'\r\n ) as unknown as SVGRectElement[];\r\n const heights = Array.from(bars).map(b => b.height.baseVal.value);\r\n expect(heights).to.eql([157]);\r\n });\r\n\r\n it('correctly displays small diff between max and min values', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range bins=\"[1519,2643,1880,2041,1638,1441]\">\r\n </histogram-date-range>\r\n `\r\n );\r\n const bars = el.shadowRoot?.querySelectorAll(\r\n '.bar'\r\n ) as unknown as SVGRectElement[];\r\n const heights = Array.from(bars).map(b => b.height.baseVal.value);\r\n expect(heights).to.eql([37, 40, 38, 38, 37, 36]);\r\n });\r\n\r\n it('has a disabled state', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"2020\"\r\n disabled\r\n bins=\"[33, 1, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n expect(\r\n el.shadowRoot\r\n ?.querySelector('.inner-container')\r\n ?.classList.contains('disabled')\r\n ).to.eq(true);\r\n\r\n const minSlider = el.shadowRoot?.querySelector('#slider-min') as SVGElement;\r\n\r\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(8); // initial state\r\n\r\n // attempt to slide to right\r\n minSlider.dispatchEvent(new PointerEvent('pointerdown'));\r\n await el.updateComplete;\r\n\r\n // cursor is not draggable if disabled\r\n expect(Array.from(minSlider.classList).join(' ')).to.eq('');\r\n\r\n // attempt to slide to right\r\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 70 }));\r\n await el.updateComplete;\r\n\r\n // slider does not moved if element disabled\r\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(8);\r\n });\r\n\r\n it('has a loading state with an activity indicator', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n minDate=\"1900\"\r\n maxDate=\"2020\"\r\n loading\r\n bins=\"[33, 1, 100]\"\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n expect(\r\n el.shadowRoot\r\n ?.querySelector('ia-activity-indicator')\r\n ?.attributes?.getNamedItem('mode')?.value\r\n ).to.eq('processing');\r\n });\r\n\r\n it('can use LitElement bound properties', async () => {\r\n const el = await fixture<HistogramDateRange>(\r\n html`\r\n <histogram-date-range\r\n .minDate=${1900}\r\n .maxDate=${'Dec 4, 2020'}\r\n .minSelectedDate=${2012}\r\n .maxSelectedDate=${2019}\r\n .bins=${[33, 1, 100]}\r\n >\r\n </histogram-date-range>\r\n `\r\n );\r\n const minDateInput = el.shadowRoot?.querySelector(\r\n '#date-min'\r\n ) as HTMLInputElement;\r\n expect(minDateInput.value).to.eq('2012');\r\n\r\n const maxDateInput = el.shadowRoot?.querySelector(\r\n '#date-max'\r\n ) as HTMLInputElement;\r\n expect(maxDateInput.value).to.eq('2019');\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"histogram-date-range.test.js","sourceRoot":"","sources":["../../test/histogram-date-range.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, oneEvent, aTimeout } from '@open-wc/testing';\n\nimport { HistogramDateRange } from '../src/histogram-date-range';\nimport '../src/histogram-date-range';\n\nconst SLIDER_WIDTH = 10;\nconst WIDTH = 200;\n\nconst subject = html`\n <histogram-date-range\n width=\"${WIDTH}\"\n tooltipWidth=\"140\"\n height=\"50\"\n dateFormat=\"M/D/YYYY\"\n minDate=\"1900\"\n maxDate=\"12/4/2020\"\n bins=\"[33, 1, 100]\"\n >\n </histogram-date-range>\n`;\n\nasync function createCustomElementInHTMLContainer(): Promise<HistogramDateRange> {\n document.head.insertAdjacentHTML(\n 'beforeend',\n `<style>\n html {\n font-size:10px;\n }\n .container {\n width: 400px;\n height: 400px;\n display: flex;\n background: #FFF6E1;\n justify-content: center;\n align-items: center;\n }\n </style>`\n );\n // https://open-wc.org/docs/testing/helpers/#customize-the-fixture-container\n const parentNode = document.createElement('div');\n parentNode.setAttribute('class', 'container');\n return fixture<HistogramDateRange>(subject, { parentNode });\n}\n\ndescribe('HistogramDateRange', () => {\n it('shows scaled histogram bars when provided with data', async () => {\n const el = await createCustomElementInHTMLContainer();\n const bars = el.shadowRoot?.querySelectorAll(\n '.bar'\n ) as unknown as SVGRectElement[];\n const heights = Array.from(bars).map(b => b.height.baseVal.value);\n\n expect(heights).to.eql([38, 7, 50]);\n });\n\n it('changes the position of the sliders and standardizes date format when dates are entered', async () => {\n const el = await createCustomElementInHTMLContainer();\n\n /* -------------------------- minimum (left) slider ------------------------- */\n expect(el.minSliderX).to.eq(SLIDER_WIDTH);\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n const pressEnterEvent = new KeyboardEvent('keyup', {\n key: 'Enter',\n });\n\n // valid min date\n minDateInput.value = '1950';\n minDateInput.dispatchEvent(pressEnterEvent);\n\n expect(Math.floor(el.minSliderX)).to.eq(84);\n expect(el.minSelectedDate).to.eq('1/1/1950'); // set to correct format\n\n // attempt to set date earlier than first item\n minDateInput.value = '10/1/1850';\n minDateInput.dispatchEvent(new Event('blur'));\n\n expect(Math.floor(el.minSliderX)).to.eq(SLIDER_WIDTH); // leftmost valid position\n // allow date value less than slider range\n expect(el.minSelectedDate).to.eq('10/1/1850');\n\n /* -------------------------- maximum (right) slider ------------------------- */\n expect(el.maxSliderX).to.eq(WIDTH - SLIDER_WIDTH);\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n\n // set valid max date\n maxDateInput.value = '3/12/1975';\n maxDateInput.dispatchEvent(pressEnterEvent);\n\n expect(Math.floor(el.maxSliderX)).to.eq(121);\n expect(maxDateInput.value).to.eq('3/12/1975');\n\n // attempt to set date later than last item\n maxDateInput.value = '12/31/2199';\n maxDateInput.dispatchEvent(new Event('blur'));\n await el.updateComplete;\n\n expect(el.maxSliderX).to.eq(WIDTH - SLIDER_WIDTH); // rightmost valid position\n // allow date value greater than slider range\n expect(maxDateInput.value).to.eq('12/31/2199');\n });\n\n it('when updateWhileFocused option is true, updates are fired upon changing input focus', async () => {\n const el = await createCustomElementInHTMLContainer();\n el.updateWhileFocused = true;\n await el.updateComplete;\n\n let updateEventFired = false;\n el.addEventListener(\n 'histogramDateRangeUpdated',\n () => (updateEventFired = true)\n );\n\n /* -------------------------- minimum (left) slider ------------------------- */\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n /* -------------------------- maximum (right) slider ------------------------- */\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n\n minDateInput.focus();\n\n // set valid min date, but don't hit Enter -- just switch focus to the max date input\n minDateInput.value = '1950';\n maxDateInput.focus();\n await el.updateComplete;\n await aTimeout(0);\n\n // update event should have fired, setting the minSelectedDate prop & slider position accordingly\n expect(updateEventFired).to.be.true;\n expect(Math.floor(el.minSliderX)).to.eq(84);\n expect(el.minSelectedDate).to.eq('1/1/1950');\n\n updateEventFired = false;\n await el.updateComplete;\n\n // set valid max date, but don't hit Enter -- just switch focus to the min date input\n maxDateInput.value = '3/12/1975';\n minDateInput.focus();\n await el.updateComplete;\n await aTimeout(0);\n\n // update event should have fired, setting the maxSelectedDate prop & slider position accordingly\n expect(updateEventFired).to.be.true;\n expect(Math.floor(el.maxSliderX)).to.eq(121);\n expect(el.maxSelectedDate).to.eq('3/12/1975');\n });\n\n it('when updateWhileFocused option is false (default), updates are not fired while one of the inputs remains focused', async () => {\n const el = await createCustomElementInHTMLContainer();\n\n let updateEventFired = false;\n el.addEventListener(\n 'histogramDateRangeUpdated',\n () => (updateEventFired = true)\n );\n\n /* -------------------------- minimum (left) slider ------------------------- */\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n /* -------------------------- maximum (right) slider ------------------------- */\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n\n minDateInput.focus();\n\n // set valid min date, but don't hit Enter -- just switch focus to the max date input\n minDateInput.value = '1950';\n maxDateInput.focus();\n await el.updateComplete;\n await aTimeout(0);\n\n // update event should NOT have fired, because focus remains within the inputs\n expect(updateEventFired).to.be.false;\n\n // set valid max date, but don't hit Enter -- just switch focus to the min date input\n maxDateInput.value = '3/12/1975';\n minDateInput.focus();\n await el.updateComplete;\n await aTimeout(0);\n\n // update event should NOT have fired, because focus remains within the inputs\n expect(updateEventFired).to.be.false;\n });\n\n it('handles invalid date inputs', async () => {\n const el = await createCustomElementInHTMLContainer();\n\n /* -------------------------- minimum (left) slider ------------------------- */\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n minDateInput.value = '5/17/1961';\n minDateInput.dispatchEvent(new Event('blur'));\n await el.updateComplete;\n\n expect(Math.floor(el.minSliderX)).to.eq(101);\n expect(minDateInput.value).to.eq('5/17/1961');\n\n // enter invalid value\n minDateInput.value = 'invalid';\n minDateInput.dispatchEvent(new Event('blur'));\n await el.updateComplete;\n\n expect(Math.floor(el.minSliderX)).to.eq(101); // does not move\n expect(minDateInput.value).to.eq('5/17/1961'); // resets back to previous date\n\n /* -------------------------- maximum (right) slider ------------------------- */\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n\n // initial values\n expect(el.maxSliderX).to.eq(WIDTH - SLIDER_WIDTH);\n expect(maxDateInput.value).to.eq('12/4/2020');\n\n // enter invalid value\n maxDateInput.value = 'Abc 12, 1YYY';\n maxDateInput.dispatchEvent(new Event('blur'));\n await el.updateComplete;\n\n expect(Math.floor(el.maxSliderX)).to.eq(WIDTH - SLIDER_WIDTH); // does not move\n expect(maxDateInput.value).to.eq('12/4/2020'); // resets back to previous date\n });\n\n it('updates the date inputs when the sliders are moved', async () => {\n const el = await createCustomElementInHTMLContainer();\n\n /* -------------------------- minimum (left) slider ------------------------- */\n const minSlider = el.shadowRoot?.querySelector('#slider-min') as SVGElement;\n const container = el.shadowRoot?.querySelector(\n '#container'\n ) as HTMLDivElement;\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n // initial state\n expect(minSlider.getBoundingClientRect().x).to.eq(108);\n expect(Array.from(minSlider.classList).join(' ')).to.eq('draggable');\n\n // pointer down\n minSlider.dispatchEvent(new PointerEvent('pointerdown'));\n await el.updateComplete;\n\n // cursor changes to 'grab'\n const classList = minSlider.classList;\n expect(classList.contains('draggable')).to.be.true;\n expect(classList.contains('dragging')).to.be.true;\n\n // slide to right\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 60 }));\n await el.updateComplete;\n\n // slider has moved\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(168);\n // min date is updated\n expect(minDateInput.value).to.eq('4/23/1940');\n\n // stop dragging\n window.dispatchEvent(new PointerEvent('pointerup'));\n await el.updateComplete;\n\n // cursor returns to normal\n expect(Array.from(container.classList)).not.to.include('dragging');\n\n /* -------------------------- maximum (right) slider ------------------------- */\n const maxSlider = el.shadowRoot?.querySelector('#slider-max') as SVGElement;\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n\n // initial state\n expect(maxSlider.getBoundingClientRect().x).to.eq(298);\n\n // slide to left\n maxSlider.dispatchEvent(new PointerEvent('pointerdown', { clientX: 195 }));\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 165 }));\n await el.updateComplete;\n\n // slider has moved\n expect(Math.round(maxSlider.getBoundingClientRect().x)).to.eq(268);\n // max date is updated\n expect(maxDateInput.value).to.eq('10/8/2000');\n await el.updateComplete;\n\n // try to slide min slider past max slider\n minSlider.dispatchEvent(new PointerEvent('pointerdown', { clientX: 62 }));\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 190 }));\n await el.updateComplete;\n\n // slider moves all the way to meet the right slider\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(258);\n\n // try to slide max slider past min slider\n maxSlider.dispatchEvent(new PointerEvent('pointerdown', { clientX: 120 }));\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 50 }));\n await el.updateComplete;\n expect(Math.round(maxSlider.getBoundingClientRect().x)).to.eq(268); // max slider didn't move\n });\n\n it(\"emits a custom event when the element's date range changes\", async () => {\n const el = await createCustomElementInHTMLContainer();\n el.updateDelay = 30; // set debounce delay of 30ms\n\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n const updateEventPromise = oneEvent(el, 'histogramDateRangeUpdated');\n\n // simulate typing a new value into input\n minDateInput.value = '1955';\n minDateInput.dispatchEvent(new Event('blur'));\n\n // will wait longer than debounce delay\n const { detail } = await updateEventPromise;\n // verify that event is emitted\n expect(detail.minDate).to.equal('1/1/1955');\n expect(detail.maxDate).to.equal('12/4/2020');\n\n let eventCount = 0;\n el.addEventListener('histogramDateRangeUpdated', () => (eventCount += 1));\n\n // events are not sent if no change since the last event that was sent\n minDateInput.value = '1955';\n minDateInput.dispatchEvent(new Event('blur'));\n await aTimeout(60); // wait longer than debounce delay\n expect(eventCount).to.equal(0);\n\n const updateEventPromise2 = oneEvent(el, 'histogramDateRangeUpdated');\n\n // with the debounce, multiple quick changes only result in one event sent\n minDateInput.value = '1965';\n minDateInput.dispatchEvent(new Event('blur'));\n await aTimeout(10); // wait less than the debounce delay\n\n minDateInput.dispatchEvent(new Event('focus'));\n minDateInput.value = '1975';\n minDateInput.dispatchEvent(new Event('blur'));\n await aTimeout(10);\n\n minDateInput.dispatchEvent(new Event('focus'));\n minDateInput.value = '1985';\n minDateInput.dispatchEvent(new Event('blur'));\n await aTimeout(10);\n\n const event2 = await updateEventPromise2;\n expect(event2.detail.minDate).to.equal('1/1/1985');\n expect(eventCount).to.equal(1); // only one event was fired\n });\n\n it('shows/hides tooltip when hovering over (or pointing at) a bar', async () => {\n const el = await createCustomElementInHTMLContainer();\n // include a number which will require commas (1,000,000)\n el.bins = [1000000, 1, 100];\n await aTimeout(10);\n const bars = el.shadowRoot?.querySelectorAll(\n '.bar'\n ) as unknown as SVGRectElement[];\n const tooltip = el.shadowRoot?.querySelector('#tooltip') as HTMLDivElement;\n expect(tooltip.innerText).to.eq('');\n\n // hover\n bars[0].dispatchEvent(new PointerEvent('pointerenter'));\n await el.updateComplete;\n expect(tooltip.innerText).to.match(\n /^1,000,000 items\\n1\\/1\\/1900 - 4\\/23\\/1940/\n );\n expect(getComputedStyle(tooltip).display).to.eq('block');\n\n // leave\n bars[0].dispatchEvent(new PointerEvent('pointerleave'));\n await el.updateComplete;\n expect(getComputedStyle(tooltip).display).to.eq('none');\n expect(tooltip.innerText).to.eq('');\n\n // ensure singular item is not pluralized\n bars[1].dispatchEvent(new PointerEvent('pointerenter'));\n await el.updateComplete;\n expect(tooltip.innerText).to.match(/^1 item\\n4\\/23\\/1940 - 8\\/13\\/1980/);\n });\n\n it('does not show tooltip while dragging', async () => {\n const el = await createCustomElementInHTMLContainer();\n const bars = el.shadowRoot?.querySelectorAll(\n '.bar'\n ) as unknown as SVGRectElement[];\n const tooltip = el.shadowRoot?.querySelector('#tooltip') as HTMLDivElement;\n expect(tooltip.innerText).to.eq('');\n const minSlider = el.shadowRoot?.querySelector('#slider-min') as SVGElement;\n\n // pointer down and slide right\n minSlider.dispatchEvent(new PointerEvent('pointerdown'));\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 100 }));\n await el.updateComplete;\n\n // hover over bar\n bars[0].dispatchEvent(new PointerEvent('pointerenter'));\n await el.updateComplete;\n // tooltip display is suppressed while dragging\n expect(tooltip.style.display).to.eq('');\n });\n\n it('passes the a11y audit', async () => {\n await fixture<HistogramDateRange>(subject).then(el =>\n expect(el).shadowDom.to.be.accessible()\n );\n });\n\n it('allows range to be pre-selected', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n minDate=\"1900\"\n maxDate=\"Dec 4, 2020\"\n minSelectedDate=\"2012\"\n maxSelectedDate=\"2019\"\n bins=\"[33, 1, 100]\"\n >\n </histogram-date-range>\n `\n );\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n expect(minDateInput.value).to.eq('2012');\n\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n expect(maxDateInput.value).to.eq('2019');\n });\n\n it('extends the selected range when the histogram is clicked outside of the current range', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n minDate=\"1900\"\n maxDate=\"2020\"\n minSelectedDate=\"1950\"\n maxSelectedDate=\"1955\"\n bins=\"[33, 1, 1, 1, 10, 10, 1, 1, 1, 50, 100]\"\n >\n </histogram-date-range>\n `\n );\n\n const leftBarToClick = Array.from(\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\n )[1]; // click on second bar to the left\n\n leftBarToClick.dispatchEvent(new Event('click'));\n await el.updateComplete;\n expect(el.minSelectedDate).to.eq('1910'); // range was extended to left\n\n const rightBarToClick = Array.from(\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\n )[8]; // click on second bar from the right\n\n rightBarToClick.dispatchEvent(new Event('click'));\n expect(el.maxSelectedDate).to.eq('1998'); // range was extended to right\n });\n\n it('narrows the selected range when the histogram is clicked inside of the current range', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n minDate=\"1900\"\n maxDate=\"2020\"\n minSelectedDate=\"1900\"\n maxSelectedDate=\"2020\"\n bins=\"[33, 1, 1, 1, 10, 10, 1, 1, 1, 50, 100]\"\n >\n </histogram-date-range>\n `\n );\n\n ///////////////////////////////////////////////\n // NB: the slider nearest the clicked bar moves\n ///////////////////////////////////////////////\n\n const leftBarToClick = Array.from(\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\n )[3]; // click on fourth bar to the left\n\n leftBarToClick.dispatchEvent(new Event('click'));\n expect(el.minSelectedDate).to.eq('1932'); // range was extended to the right\n\n const rightBarToClick = Array.from(\n el.shadowRoot?.querySelectorAll('.bar') as NodeList\n )[8]; // click on second bar from the right\n\n rightBarToClick.dispatchEvent(new Event('click'));\n expect(el.maxSelectedDate).to.eq('1998'); // range was extended to the left\n });\n\n it('handles invalid pre-selected range by defaulting to overall max and min', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n minDate=\"1900\"\n maxDate=\"2020\"\n minSelectedDate=\"2000xyz\"\n maxSelectedDate=\"5000\"\n bins=\"[33, 1, 100]\"\n >\n </histogram-date-range>\n `\n );\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n // malformed min date defaults to overall min\n expect(minDateInput.value).to.eq('1900');\n\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n // well-formed max date is allowed\n expect(maxDateInput.value).to.eq('5000');\n });\n\n it('handles year values less than 1000 by overriding date format to just display year', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n dateFormat=\"M/D/YYYY\"\n minDate=\"-2000\"\n maxDate=\"2000\"\n minSelectedDate=\"-500\"\n maxSelectedDate=\"500\"\n bins=\"[33, 1, 100]\"\n >\n </histogram-date-range>\n `\n );\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n expect(minDateInput.value).to.eq('-500');\n\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n expect(maxDateInput.value).to.eq('500');\n });\n\n it('handles missing data', async () => {\n let el = await fixture<HistogramDateRange>(\n html`<histogram-date-range>\n minDate=\"1900\" maxDate=\"2020\" bins=\"\"\n </histogram-date-range>`\n );\n expect(el.shadowRoot?.innerHTML).to.contain('no data');\n el = await fixture<HistogramDateRange>(\n html`<histogram-date-range\n minDate=\"1900\"\n maxDate=\"2020\"\n bins=\"[]\"\n missingDataMessage=\"no data available\"\n ></histogram-date-range>`\n );\n expect(el.shadowRoot?.innerHTML).to.contain('no data available');\n });\n\n it('correctly displays data consisting of a single bin', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range minDate=\"2020\" maxDate=\"2020\" bins=\"[50]\">\n </histogram-date-range>\n `\n );\n const bars = el.shadowRoot?.querySelectorAll(\n '.bar'\n ) as unknown as SVGRectElement[];\n const heights = Array.from(bars).map(b => b.height.baseVal.value);\n expect(heights).to.eql([157]);\n });\n\n it('correctly displays small diff between max and min values', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range bins=\"[1519,2643,1880,2041,1638,1441]\">\n </histogram-date-range>\n `\n );\n const bars = el.shadowRoot?.querySelectorAll(\n '.bar'\n ) as unknown as SVGRectElement[];\n const heights = Array.from(bars).map(b => b.height.baseVal.value);\n expect(heights).to.eql([37, 40, 38, 38, 37, 36]);\n });\n\n it('has a disabled state', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n minDate=\"1900\"\n maxDate=\"2020\"\n disabled\n bins=\"[33, 1, 100]\"\n >\n </histogram-date-range>\n `\n );\n expect(\n el.shadowRoot\n ?.querySelector('.inner-container')\n ?.classList.contains('disabled')\n ).to.eq(true);\n\n const minSlider = el.shadowRoot?.querySelector('#slider-min') as SVGElement;\n\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(8); // initial state\n\n // attempt to slide to right\n minSlider.dispatchEvent(new PointerEvent('pointerdown'));\n await el.updateComplete;\n\n // cursor is not draggable if disabled\n expect(Array.from(minSlider.classList).join(' ')).to.eq('');\n\n // attempt to slide to right\n window.dispatchEvent(new PointerEvent('pointermove', { clientX: 70 }));\n await el.updateComplete;\n\n // slider does not moved if element disabled\n expect(Math.round(minSlider.getBoundingClientRect().x)).to.eq(8);\n });\n\n it('has a loading state with an activity indicator', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n minDate=\"1900\"\n maxDate=\"2020\"\n loading\n bins=\"[33, 1, 100]\"\n >\n </histogram-date-range>\n `\n );\n expect(\n el.shadowRoot\n ?.querySelector('ia-activity-indicator')\n ?.attributes?.getNamedItem('mode')?.value\n ).to.eq('processing');\n });\n\n it('can use LitElement bound properties', async () => {\n const el = await fixture<HistogramDateRange>(\n html`\n <histogram-date-range\n .minDate=${1900}\n .maxDate=${'Dec 4, 2020'}\n .minSelectedDate=${2012}\n .maxSelectedDate=${2019}\n .bins=${[33, 1, 100]}\n >\n </histogram-date-range>\n `\n );\n const minDateInput = el.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n expect(minDateInput.value).to.eq('2012');\n\n const maxDateInput = el.shadowRoot?.querySelector(\n '#date-max'\n ) as HTMLInputElement;\n expect(maxDateInput.value).to.eq('2019');\n });\n});\n"]}
@@ -1,169 +1,194 @@
1
- import { s, r } from '../../common/lit-element-2ebaea62.js';
2
- import { $ } from '../../common/lit-html-ab4365d1.js';
1
+ import { s, i } from '../common/lit-element-4616b61d.js';
2
+ import { x } from '../common/lit-html-a4f3a51c.js';
3
+ import { e, n } from '../common/query-assigned-elements-61aefe32.js';
3
4
 
4
- const IAActivityIndicatorMode = Object.freeze({
5
- processing: 'processing',
6
- complete: 'complete',
7
- });
8
-
9
- class IAActivityIndicator extends s {
10
- static get properties() {
11
- return {
12
- mode: { type: String },
13
- };
14
- }
15
-
16
- constructor() {
17
- super();
18
- this.mode = IAActivityIndicatorMode.processing;
19
- }
20
-
21
- render() {
22
- return $`
23
- <div class="${this.mode}">
24
- <svg
25
- viewBox="0 0 120 120"
26
- preserveAspectRatio="none"
27
- version="1.1"
28
- xmlns="http://www.w3.org/2000/svg"
29
- xmlns:xlink="http://www.w3.org/1999/xlink"
30
- aria-labelledby="indicatorTitle indicatorDescription"
31
- >
32
- <title id="indicatorTitle">Activity Indicator</title>
33
- <desc id="indicatorDescription">
34
- A rotating activity indicator with three dots in the middle.
35
- </desc>
36
- <g
37
- id="icons/check-ring---squared"
38
- stroke="none"
39
- stroke-width="1"
40
- fill="none"
41
- fill-rule="evenodd"
42
- >
43
- <path
44
- id="completed-ring"
45
- class="loaded-indicator"
46
- d="M60,10 C70.5816709,10 80.3955961,13.2871104 88.4763646,18.8959201 L78.3502633,29.0214223 C72.9767592,25.8315427 66.7022695,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 L95.995,59.46 L108.327675,47.128668 C109.350926,50.9806166 109.925886,55.015198 109.993301,59.1731586 L110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z"
47
- ></path>
48
- <polygon
49
- id="check"
50
- class="loaded-indicator"
51
- transform="translate(75.000000, 41.500000) rotate(44.000000) translate(-75.000000, -41.500000) "
52
- points="96 85 54 85 54 65 76 64.999 76 -2 96 -2"
53
- ></polygon>
54
- <path
55
- id="activity-ring"
56
- class="activity-indicator"
57
- d="M60,10 C69.8019971,10 78.9452178,12.8205573 86.6623125,17.6943223 L76.4086287,27.9484118 C71.4880919,25.4243078 65.9103784,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 C96,53.3014663 94.1704984,47.0302355 90.9839104,41.6587228 L101.110332,31.5326452 C106.715332,39.6116982 110,49.4222615 110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z"
58
- ></path>
59
- <g
60
- id="activity-dots"
61
- class="activity-indicator"
62
- transform="translate(40.000000, 55.000000)"
63
- >
64
- <circle id="left-dot" cx="5" cy="5" r="5"></circle>
65
- <circle id="middle-dot" cx="20" cy="5" r="5"></circle>
66
- <circle id="right-dot" cx="35" cy="5" r="5"></circle>
67
- </g>
68
- </g>
69
- </svg>
70
- </div>
71
- `;
72
- }
73
-
74
- static get styles() {
75
- const checkmarkColorCss = r`var(--activityIndicatorCheckmarkColor, #31A481)`;
76
- const completedRingColorCss = r`var(--activityIndicatorCompletedRingColor, #31A481)`;
77
- const loadingRingColorCss = r`var(--activityIndicatorLoadingRingColor, #333333)`;
78
- const loadingDotColorCss = r`var(--activityIndicatorLoadingDotColor, #333333)`;
79
-
80
- return r`
81
- #completed-ring {
82
- fill: ${completedRingColorCss};
83
- }
84
-
85
- #check {
86
- fill: ${checkmarkColorCss};
87
- }
88
-
89
- #activity-ring {
90
- fill: ${loadingRingColorCss};
91
- }
92
-
93
- #activity-dots {
94
- fill: ${loadingDotColorCss};
95
- }
96
-
97
- .activity-indicator {
98
- opacity: 0;
99
- transition: opacity 0.25s ease-out;
100
- }
101
-
102
- .processing .activity-indicator {
103
- opacity: 1;
104
- }
105
-
106
- .loaded-indicator {
107
- opacity: 1;
108
- transition: opacity 0.25s ease-out;
109
- }
110
-
111
- .processing .loaded-indicator {
112
- opacity: 0;
113
- }
114
-
115
- .image {
116
- border: 1px solid red;
117
- display: inline-block;
118
- }
119
-
120
- .processing #activity-ring {
121
- animation: rotate 1.3s infinite linear;
122
- transform-origin: 50px 50px;
123
- transform-box: fill-box;
124
- }
125
-
126
- .processing #left-dot {
127
- opacity: 0;
128
- animation: dot 1.3s infinite;
129
- animation-delay: 0.2s;
130
- }
131
-
132
- .processing #middle-dot {
133
- opacity: 0;
134
- animation: dot 1.3s infinite;
135
- animation-delay: 0.4s;
136
- }
137
-
138
- .processing #right-dot {
139
- opacity: 0;
140
- animation: dot 1.3s infinite;
141
- animation-delay: 0.6s;
142
- }
143
-
144
- @keyframes rotate {
145
- 0% {
146
- transform: rotate(-360deg);
147
- }
148
- 100% {
149
- /* This frame is supposed to be inferred, but Safari doesn't rotate it unless we're explicit */
150
- transform: rotate(0deg);
151
- }
152
- }
153
-
154
- @keyframes dot {
155
- 0% {
156
- opacity: 0;
157
- }
158
- 25% {
159
- opacity: 1;
160
- }
161
- 100% {
162
- opacity: 0;
163
- }
164
- }
165
- `;
166
- }
167
- }
168
-
169
- window.customElements.define('ia-activity-indicator', IAActivityIndicator);
5
+ /******************************************************************************
6
+ Copyright (c) Microsoft Corporation.
7
+
8
+ Permission to use, copy, modify, and/or distribute this software for any
9
+ purpose with or without fee is hereby granted.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ ***************************************************************************** */
19
+
20
+ function __decorate(decorators, target, key, desc) {
21
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
23
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
24
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
25
+ }
26
+
27
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
28
+ var e = new Error(message);
29
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
30
+ };
31
+
32
+ var IAActivityIndicatorMode;
33
+ (function (IAActivityIndicatorMode) {
34
+ IAActivityIndicatorMode["processing"] = "processing";
35
+ IAActivityIndicatorMode["complete"] = "complete";
36
+ })(IAActivityIndicatorMode || (IAActivityIndicatorMode = {}));
37
+ let IAActivityIndicator = class IAActivityIndicator extends s {
38
+ constructor() {
39
+ super(...arguments);
40
+ this.mode = 'processing';
41
+ }
42
+ render() {
43
+ return x `
44
+ <div class="${this.mode}">
45
+ <svg
46
+ viewBox="0 0 120 120"
47
+ preserveAspectRatio="none"
48
+ version="1.1"
49
+ xmlns="http://www.w3.org/2000/svg"
50
+ xmlns:xlink="http://www.w3.org/1999/xlink"
51
+ aria-labelledby="indicatorTitle indicatorDescription"
52
+ >
53
+ <title id="indicatorTitle">Activity Indicator</title>
54
+ <desc id="indicatorDescription">
55
+ A rotating activity indicator with three dots in the middle.
56
+ </desc>
57
+ <g
58
+ id="icons/check-ring---squared"
59
+ stroke="none"
60
+ stroke-width="1"
61
+ fill="none"
62
+ fill-rule="evenodd"
63
+ >
64
+ <path
65
+ id="completed-ring"
66
+ class="loaded-indicator"
67
+ d="M60,10 C70.5816709,10 80.3955961,13.2871104 88.4763646,18.8959201 L78.3502633,29.0214223 C72.9767592,25.8315427 66.7022695,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 L95.995,59.46 L108.327675,47.128668 C109.350926,50.9806166 109.925886,55.015198 109.993301,59.1731586 L110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z"
68
+ ></path>
69
+ <polygon
70
+ id="check"
71
+ class="loaded-indicator"
72
+ transform="translate(75.000000, 41.500000) rotate(44.000000) translate(-75.000000, -41.500000) "
73
+ points="96 85 54 85 54 65 76 64.999 76 -2 96 -2"
74
+ ></polygon>
75
+ <path
76
+ id="activity-ring"
77
+ class="activity-indicator"
78
+ d="M60,10 C69.8019971,10 78.9452178,12.8205573 86.6623125,17.6943223 L76.4086287,27.9484118 C71.4880919,25.4243078 65.9103784,24 60,24 C40.117749,24 24,40.117749 24,60 C24,79.882251 40.117749,96 60,96 C79.882251,96 96,79.882251 96,60 C96,53.3014663 94.1704984,47.0302355 90.9839104,41.6587228 L101.110332,31.5326452 C106.715332,39.6116982 110,49.4222615 110,60 C110,87.6142375 87.6142375,110 60,110 C32.3857625,110 10,87.6142375 10,60 C10,32.3857625 32.3857625,10 60,10 Z"
79
+ ></path>
80
+ <g
81
+ id="activity-dots"
82
+ class="activity-indicator"
83
+ transform="translate(40.000000, 55.000000)"
84
+ >
85
+ <circle id="left-dot" cx="5" cy="5" r="5"></circle>
86
+ <circle id="middle-dot" cx="20" cy="5" r="5"></circle>
87
+ <circle id="right-dot" cx="35" cy="5" r="5"></circle>
88
+ </g>
89
+ </g>
90
+ </svg>
91
+ </div>
92
+ `;
93
+ }
94
+ static get styles() {
95
+ const checkmarkColorCss = i `var(--activityIndicatorCheckmarkColor, #31A481)`;
96
+ const completedRingColorCss = i `var(--activityIndicatorCompletedRingColor, #31A481)`;
97
+ const loadingRingColorCss = i `var(--activityIndicatorLoadingRingColor, #333333)`;
98
+ const loadingDotColorCss = i `var(--activityIndicatorLoadingDotColor, #333333)`;
99
+ return i `
100
+ #completed-ring {
101
+ fill: ${completedRingColorCss};
102
+ }
103
+
104
+ #check {
105
+ fill: ${checkmarkColorCss};
106
+ }
107
+
108
+ #activity-ring {
109
+ fill: ${loadingRingColorCss};
110
+ }
111
+
112
+ #activity-dots {
113
+ fill: ${loadingDotColorCss};
114
+ }
115
+
116
+ .activity-indicator {
117
+ opacity: 0;
118
+ transition: opacity 0.25s ease-out;
119
+ }
120
+
121
+ .processing .activity-indicator {
122
+ opacity: 1;
123
+ }
124
+
125
+ .loaded-indicator {
126
+ opacity: 1;
127
+ transition: opacity 0.25s ease-out;
128
+ }
129
+
130
+ .processing .loaded-indicator {
131
+ opacity: 0;
132
+ }
133
+
134
+ .image {
135
+ border: 1px solid red;
136
+ display: inline-block;
137
+ }
138
+
139
+ .processing #activity-ring {
140
+ animation: rotate 1.3s infinite linear;
141
+ transform-origin: 50px 50px;
142
+ transform-box: fill-box;
143
+ }
144
+
145
+ .processing #left-dot {
146
+ opacity: 0;
147
+ animation: dot 1.3s infinite;
148
+ animation-delay: 0.2s;
149
+ }
150
+
151
+ .processing #middle-dot {
152
+ opacity: 0;
153
+ animation: dot 1.3s infinite;
154
+ animation-delay: 0.4s;
155
+ }
156
+
157
+ .processing #right-dot {
158
+ opacity: 0;
159
+ animation: dot 1.3s infinite;
160
+ animation-delay: 0.6s;
161
+ }
162
+
163
+ @keyframes rotate {
164
+ 0% {
165
+ transform: rotate(-360deg);
166
+ }
167
+ 100% {
168
+ /* This frame is supposed to be inferred, but Safari doesn't rotate it unless we're explicit */
169
+ transform: rotate(0deg);
170
+ }
171
+ }
172
+
173
+ @keyframes dot {
174
+ 0% {
175
+ opacity: 0;
176
+ }
177
+ 25% {
178
+ opacity: 1;
179
+ }
180
+ 100% {
181
+ opacity: 0;
182
+ }
183
+ }
184
+ `;
185
+ }
186
+ };
187
+ __decorate([
188
+ n({ type: String })
189
+ ], IAActivityIndicator.prototype, "mode", void 0);
190
+ IAActivityIndicator = __decorate([
191
+ e('ia-activity-indicator')
192
+ ], IAActivityIndicator);
193
+
194
+ export { IAActivityIndicator, IAActivityIndicatorMode };