@nylas/web-elements 0.0.0-test-20250318204811 → 0.0.0-test-20250320180623
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +13 -13
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4813 -4805
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +1 -1
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js.map +1 -1
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +1 -1
- package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +9 -9
- package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +2 -2
- package/dist/cjs/input-dropdown_2.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +14 -10
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-calendar_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-key-points.cjs.entry.js +1 -1
- package/dist/cjs/nylas-key-points.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-provider.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +3 -3
- package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/{scheduler-store-599282e9.js → scheduler-store-df3a9a3a.js} +10 -2
- package/dist/cjs/scheduler-store-df3a9a3a.js.map +1 -0
- package/dist/collection/components/design-system/input-dropdown/input-dropdown.css +1 -1
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +3 -3
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js.map +1 -1
- package/dist/collection/components/nylas-notebook/nylas-key-points/nylas-key-points.js +4 -3
- package/dist/collection/components/nylas-notebook/nylas-key-points/nylas-key-points.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js +13 -11
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js +3 -3
- package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js +8 -6
- package/dist/collection/components/scheduler/nylas-booking-form/test/nylas-booking-form.spec.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js +8 -10
- package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +2 -2
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +11 -11
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.css +1 -3
- package/dist/collection/components/scheduler-editor/nylas-reminder-time/nylas-reminder-time.css +1 -3
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js +1 -29
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
- package/dist/collection/types/index.js +29 -0
- package/dist/collection/types/index.js.map +1 -1
- package/dist/components/input-dropdown2.js +1 -1
- package/dist/components/input-dropdown2.js.map +1 -1
- package/dist/components/nylas-booked-event-card2.js +9 -5
- package/dist/components/nylas-booked-event-card2.js.map +1 -1
- package/dist/components/nylas-booking-form2.js +3 -3
- package/dist/components/nylas-booking-form2.js.map +1 -1
- package/dist/components/nylas-editor-tabs-group2.js +7 -7
- package/dist/components/nylas-editor-tabs-group2.js.map +1 -1
- package/dist/components/nylas-editor-tabs2.js +2 -2
- package/dist/components/nylas-event-calendar2.js.map +1 -1
- package/dist/components/nylas-event-duration2.js +1 -1
- package/dist/components/nylas-event-duration2.js.map +1 -1
- package/dist/components/nylas-key-points.js +1 -1
- package/dist/components/nylas-key-points.js.map +1 -1
- package/dist/components/nylas-organizer-confirmation-card2.js +4 -4
- package/dist/components/nylas-organizer-confirmation-card2.js.map +1 -1
- package/dist/components/nylas-reminder-time2.js +1 -1
- package/dist/components/nylas-reminder-time2.js.map +1 -1
- package/dist/components/nylas-scheduling.js +2 -2
- package/dist/components/nylas-scheduling.js.map +1 -1
- package/dist/components/scheduler-store.js +9 -1
- package/dist/components/scheduler-store.js.map +1 -1
- package/dist/components/time-period-selector2.js +1 -1
- package/dist/components/time-period-selector2.js.map +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js.map +1 -1
- package/dist/esm/checkmark-icon_15.entry.js +1 -1
- package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
- package/dist/esm/google-logo-icon_6.entry.js +9 -9
- package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
- package/dist/esm/input-dropdown_2.entry.js +2 -2
- package/dist/esm/input-dropdown_2.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nylas-booked-event-card_12.entry.js +14 -10
- package/dist/esm/nylas-booked-event-card_12.entry.js.map +1 -1
- package/dist/esm/nylas-event-calendar_3.entry.js.map +1 -1
- package/dist/esm/nylas-key-points.entry.js +1 -1
- package/dist/esm/nylas-key-points.entry.js.map +1 -1
- package/dist/esm/nylas-provider.entry.js +1 -1
- package/dist/esm/nylas-scheduling.entry.js +3 -3
- package/dist/esm/nylas-scheduling.entry.js.map +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/{scheduler-store-59b3f29b.js → scheduler-store-ef022be9.js} +10 -2
- package/dist/esm/scheduler-store-ef022be9.js.map +1 -0
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
- package/dist/nylas-web-elements/p-13a6c977.entry.js +2 -0
- package/dist/nylas-web-elements/p-13a6c977.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-a6fbfec1.entry.js → p-1fb32e0e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-40e57350.entry.js → p-463d9c42.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-40e57350.entry.js.map → p-463d9c42.entry.js.map} +1 -1
- package/dist/nylas-web-elements/p-4e20f21a.entry.js.map +1 -1
- package/dist/nylas-web-elements/{p-ef506ab3.entry.js → p-55886492.entry.js} +2 -2
- package/dist/nylas-web-elements/p-55886492.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-731a856b.js +2 -0
- package/dist/nylas-web-elements/p-731a856b.js.map +1 -0
- package/dist/nylas-web-elements/{p-4130014c.entry.js → p-74dfe60e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-4130014c.entry.js.map → p-74dfe60e.entry.js.map} +1 -1
- package/dist/nylas-web-elements/p-a6a52e17.entry.js +2 -0
- package/dist/nylas-web-elements/p-a6a52e17.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-8841358d.entry.js → p-a906d005.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a906d005.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-ab3ba8dc.entry.js +2 -0
- package/dist/nylas-web-elements/p-ab3ba8dc.entry.js.map +1 -0
- package/dist/types/components/design-system/time-period-selector/time-period-selector.d.ts +1 -1
- package/dist/types/components/nylas-notebook/nylas-key-points/nylas-key-points.d.ts +1 -6
- package/dist/types/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.d.ts +2 -1
- package/dist/types/components/scheduler/nylas-booking-form/nylas-booking-form.d.ts +1 -1
- package/dist/types/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.d.ts +1 -1
- package/dist/types/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.d.ts +5 -5
- package/dist/types/components/scheduler-editor/nylas-event-calendar/nylas-event-calendar.d.ts +1 -2
- package/dist/types/components.d.ts +12 -12
- package/dist/types/connector/nylas-scheduler-connector/errors/index.d.ts +1 -31
- package/dist/types/connector/shared/api/scheduler.d.ts +1 -1
- package/dist/types/types/index.d.ts +36 -0
- package/package.json +2 -2
- package/dist/cjs/scheduler-store-599282e9.js.map +0 -1
- package/dist/esm/scheduler-store-59b3f29b.js.map +0 -1
- package/dist/nylas-web-elements/p-790c6070.js +0 -2
- package/dist/nylas-web-elements/p-790c6070.js.map +0 -1
- package/dist/nylas-web-elements/p-8841358d.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-ac757a7b.entry.js +0 -2
- package/dist/nylas-web-elements/p-ac757a7b.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-b0f18064.entry.js +0 -2
- package/dist/nylas-web-elements/p-b0f18064.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-ef506ab3.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-f99b677f.entry.js +0 -2
- package/dist/nylas-web-elements/p-f99b677f.entry.js.map +0 -1
- /package/dist/nylas-web-elements/{p-a6fbfec1.entry.js.map → p-1fb32e0e.entry.js.map} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e,c as t,h as o,a as s}from"./p-6f5a3998.js";import{i as r}from"./p-6c2ba972.js";import{a as i,i as n}from"./p-77e4b56c.js";import"./p-c79dcb59.js";const d=':host{display:block;position:relative;--nylas-primary:#2563eb;--nylas-error:#cc4841;--nylas-error-pressed:#992222;--nylas-wraning:#f06c00;--nylas-success:#16a392;--nylas-info:#2b8fc2;--nylas-base-0:#ffffff;--nylas-base-25:#fcfcfd;--nylas-base-50:#f8f9fc;--nylas-base-100:#eaecf5;--nylas-base-200:#d5d9eb;--nylas-base-300:#b3b8d8;--nylas-base-400:#717bbc;--nylas-base-500:#4e5ba6;--nylas-base-600:#3e4784;--nylas-base-700:#263f72;--nylas-base-800:#293056;--nylas-base-900:#101323;--nylas-base-950:#0e101b;--nylas-color-blue-100:#e0e6f9;--nylas-border-radius:0.25rem;--nylas-border-radius-2x:0.5rem;--nylas-border-radius-3x:0.75rem;--nylas-font-family:"Inter", sans-serif;--nylas-color-black:#000000;--nylas-color-grey-900:#2c2c2c;--nylas-color-grey-800:#4b4b4b;--nylas-color-grey-700:#6e6e6e;--nylas-color-grey-600:#8e8e8e;--nylas-color-grey-500:#b3b3b3;--nylas-color-grey-400:#cacaca;--nylas-color-grey-300:#e1e1e1;--nylas-color-grey-200:#eaeaea;--nylas-color-grey-100:#f5f5f5;--nylas-color-grey-50:#fbfcfe;--nylas-color-white:#ffffff;--nylas-color-red-900:#992222;--nylas-color-red-700:#cc4841;--nylas-color-red-500:#ff786a;--nylas-color-red-300:#ffa79e;--nylas-color-red-100:#ffc5bf;--nylas-color-red-50:#ffeae8;--nylas-color-blue-900:#213571;--nylas-color-blue-700:#314fa9;--nylas-color-blue-500:#4169e1;--nylas-color-blue-300:#bdccf9;--nylas-color-blue-100:#e0e6f9;--nylas-color-blue-50:#f6f8fd;--nylas-color-yellow-900:#7c6506;--nylas-color-yellow-700:#c29f09;--nylas-color-yellow-500:#f7c90b;--nylas-color-yellow-300:#f9de70;--nylas-color-yellow-100:#fceba9;--nylas-color-yellow-50:#fdf4ce;--nylas-color-green-900:#0e6b60;--nylas-color-green-700:#16a392;--nylas-color-green-500:#17c3b2;--nylas-color-green-300:#74dbd1;--nylas-color-green-100:#a2e7e0;--nylas-color-green-50:#d1f3f0;--nylas-color-purple-900:#643554;--nylas-color-purple-700:#954f7d;--nylas-color-purple-500:#c769a7;--nylas-color-purple-300:#dda5ca;--nylas-color-purple-100:#e0bdd6;--nylas-color-purple-50:#e9dde5;--nylas-color-sky-900:#20698f;--nylas-color-sky-700:#2b8fc2;--nylas-color-sky-500:#6dceff;--nylas-color-sky-300:#8fdaff;--nylas-color-sky-100:#b8e7ff;--nylas-color-sky-50:#d9f2ff}@media screen and (max-width: 768px){:host{position:unset}}.dropdown{display:inline-block;width:inherit}.dropbtn{color:var(--nylas-base-800);padding:10px;font-size:16px;font-family:var(--nylas-font-family);cursor:pointer;display:flex;gap:0.5rem;background:transparent;border:none;border-radius:var(--nylas-border-radius-2x);padding:14px 16px;border-radius:var(--nylas-border-radius-2x)}.dropbtn.focus{background:transparent}.dropbtn:hover,.dropbtn:active{outline:1px solid var(--nylas-primary)}.dropbtn:active{outline:2px solid var(--nylas-primary)}.dropbtn span.chevron{display:flex;align-self:center}.dropbtn span.open{transform:rotate(90deg)}.dropbtn span.closed{transform:rotate(270deg)}.dropbtn span.selected-option{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:144px;font-size:14px;line-height:20px}@media screen and (max-width: 768px){.dropbtn span.selected-option{max-width:124px;font-size:16px}}.dropdown-content{display:block;margin-top:0.5rem;background-color:var(--nylas-base-0);max-width:306px;width:max-content;max-height:336px;overflow:auto;z-index:1;border-radius:4px;position:absolute;box-shadow:0px 4px 6px -2px rgba(0, 0, 0, 0.05);box-shadow:0px 10px 15px -3px rgba(0, 0, 0, 0.1)}@media screen and (max-width: 768px){.dropdown-content{right:0;width:325px;max-width:unset}}.search-box{border-bottom:1px solid var(--nylas-base-200);padding:10px;position:sticky;top:0;background:var(--nylas-base-0)}.search-box .icon{position:absolute;top:1.25rem;left:1.25rem;color:var(--nylas-base-300)}.dropdown-content ul{padding:0;list-style-type:none;color:var(--nylas-base-900);max-height:336px}.dropdown-content ul li{padding:16px, 12px, 16px, 12px;color:var(--nylas-base-900);padding:12px 16px;text-decoration:none;display:block;font-family:inherit;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0px;text-align:left;cursor:pointer}.dropdown-content ul li:hover,.dropdown-content ul li:focus{background-color:var(--nylas-base-100)}.dropdown-content .selected{background-color:#e7e7e7}input[type=text]{width:-webkit-fill-available;padding:inherit;border:1px solid #ccc;border-radius:4px;position:sticky;background:no-repeat scroll 7px 7px;padding-left:30px;background-size:16px 16px}';const a=d;const l=class{constructor(o){e(this,o);this.inputOptionChanged=t(this,"inputOptionChanged",7);this.name=undefined;this.options=[];this.defaultInputOption=undefined;this.inputValue=undefined;this.pluralizedLabel="";this.filterable=false;this.selectedOption=this.defaultInputOption||null;this.isOpen=false;this.typedValue="";this.filteredOptions=[...this.options];this.ariaActivedescendant="";this.shouldAutoScroll=false}optionsChangedHandler(e,t){if(e===t){return}this.filteredOptions=this.getFilteredOptions(e)}defaultSelectedOptionChangedHandler(e,t){if(e?.label===t?.label){return}this.selectedOption=e}inputValueChangedHandler(e,t){if(e===t){return}this.filteredOptions=this.getFilteredOptions(this.options)}componentWillLoad(){this.filteredOptions=this.getFilteredOptions(this.options);if(!this.selectedOption&&!!this.defaultInputOption){this.selectedOption=this.defaultInputOption}if(!this.selectedOption&&this.options.length>0){this.selectedOption=this.options[0]}}getFilteredOptions(e){if(!this.filterable){return e}return e.filter((e=>e?.value?.toString().toLowerCase().includes(this.typedValue?.toLowerCase())||e?.label?.toLowerCase().includes(this.typedValue?.toLowerCase())))}toggleDropdown(){this.isOpen=!this.isOpen}selectOption(e){this.selectedOption=e;this.toggleDropdown();this.inputOptionChanged.emit({value:e.value,name:this.name})}handleOnInput(e){const t=e.target.value;this.typedValue=t;const o=this.options.findIndex((e=>e.label.toLowerCase().includes(t.toLowerCase())));if(o>-1){this.scrollToViewWithinParent(o)}this.inputOptionChanged.emit({value:t,name:this.name})}scrollToViewWithinParent(e){const t=this.options[e];const o=this.el.shadowRoot?.getElementById(t.value.toString());const s=this.optionsRef;this.ariaActivedescendant=t.value.toString();if(!o||!s)return;const r=o.getBoundingClientRect();const i=s.getBoundingClientRect();if(r.top<i.top){s.scrollTop-=i.top-r.top}else if(r.bottom>i.bottom){s.scrollTop+=r.bottom-i.bottom}}handleSelectButtonKeyDown(e){switch(e.key){case"ArrowDown":case"Enter":e.preventDefault();if(!this.isOpen){this.toggleDropdown()}this.inputRef?.focus();break;case"Escape":this.isOpen=false;break}}handleClick(e){if(this.isOpen){const t=e.target.value;const o=this.options.findIndex((e=>e.label.toLowerCase().includes(t.toLowerCase())));if(o>-1){setTimeout((()=>{this.scrollToViewWithinParent(o)}),10)}}}handleListboxKeydown(e){const t=this.filteredOptions;const o=t.findIndex((e=>e.value===this.ariaActivedescendant));if(e.key==="ArrowDown"||e.key==="Tab"&&!e.shiftKey){e.preventDefault();if(o===t.length-1){this.ariaActivedescendant="";this.inputRef?.focus();return}const s=o+1<t.length?o+1:0;this.ariaActivedescendant=t[s].value;this.focusOption(s)}else if(e.key==="ArrowUp"||e.key==="Tab"&&e.shiftKey){e.preventDefault();if(o===0){this.ariaActivedescendant="";this.inputRef?.focus();return}const s=o-1>=0?o-1:t.length-1;this.ariaActivedescendant=t[s].value;this.focusOption(s)}else if(e.key==="Enter"){e.preventDefault();if(this.ariaActivedescendant){this.selectOption(t[o])}}else if(e.key==="Escape"){this.isOpen=false}}focusOption(e){const t=this.filteredOptions[e];if(!t)return;const o=t.value;const s=this.el.shadowRoot?.getElementById(o);if(s){s.focus();s.scrollIntoView({behavior:"smooth",block:"nearest"})}}handleComboboxKeyDown(e){if(e.key==="ArrowDown"||e.key=="Tab"&&!e.shiftKey){e.preventDefault();if(!this.isOpen){this.isOpen=true;this.shouldAutoScroll=true;return}this.ariaActivedescendant=this.filteredOptions[0].value;this.focusOption(0)}else if(e.key==="ArrowUp"||e.key==="Tab"&&e.shiftKey){e.preventDefault();this.ariaActivedescendant=this.filteredOptions[this.filteredOptions.length-1].value;this.focusOption(this.filteredOptions.length-1)}else if(e.key==="Escape"){this.isOpen=false}}handleOutsideClick(e){const t=e.composedPath();const o=t.includes(this.el);if(!o&&this.isOpen){this.isOpen=false}}render(){return o("div",{key:"806fa6a509d7a7c78bf6ee1de1dd4cd7a755bab4",class:"dropdown",part:"id_dropdown"},o("input",{key:"b594d3517fba52cb85e95220c6d415d672c26a71",type:"text",name:this.name,id:this.name,part:"id_dropdown-input",class:{dropbtn:true,open:this.isOpen},value:this.inputValue,onClick:e=>{this.toggleDropdown();this.shouldAutoScroll=true;this.handleClick(e)},"aria-haspopup":"listbox","aria-label":this.name,"aria-expanded":this.isOpen?"true":"false",onKeyDown:e=>this.handleComboboxKeyDown(e),onInput:e=>this.handleOnInput(e)}),this.isOpen?o("div",{class:"dropdown-content",part:"id_dropdown-content",ref:e=>this.optionsRef=e},o("ul",{tabindex:"-1",role:"listbox","aria-label":this.name,"aria-activedescendant":this.ariaActivedescendant,onKeyDown:e=>this.handleListboxKeydown(e)},this.filteredOptions.map((e=>o("li",{tabindex:"0",key:e.value,id:e.value,onClick:()=>this.selectOption(e),role:"option",class:{focused:this.ariaActivedescendant===e.value.toString()}},e.labelHTML?e.labelHTML:e.label))))):null)}get el(){return s(this)}static get watchers(){return{options:["optionsChangedHandler"],defaultInputOption:["defaultSelectedOptionChangedHandler"],inputValue:["inputValueChangedHandler"]}}};l.style=a;const p=".time-period-selector.sc-time-period-selector{display:grid;gap:0.5rem;grid-template-columns:auto 1fr}.time-period-selector.sc-time-period-selector select-dropdown.sc-time-period-selector,.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector{border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius-2x)}.time-period-selector.sc-time-period-selector select-dropdown.sc-time-period-selector{width:116px}.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector{width:84px;display:flex;align-items:center}.time-period-selector.sc-time-period-selector select-dropdown#time-period.sc-time-period-selector::part(sd_dropdown-button){width:100%}.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector::part(id_dropdown){width:inherit;height:100%}.time-period-selector.sc-time-period-selector input-dropdown#time-number.sc-time-period-selector::part(id_dropdown-input){border:none;border-radius:var(--nylas-border-radius-2x)}.time-period-selector.sc-time-period-selector input-dropdown#time-number.error.sc-time-period-selector::part(id_dropdown-input){border:1px solid var(--nylas-error)}.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector:hover{outline:1px solid var(--nylas-primary);border:none}.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector::part(id_dropdown-input){padding:16px;gap:1rem}.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector::part(id_dropdown-input):hover{border:none;outline:none}.time-period-selector.sc-time-period-selector input-dropdown.sc-time-period-selector::part(id_dropdown-content){width:100%;max-height:200px}.time-period-selector.sc-time-period-selector select-dropdown.sc-time-period-selector::part(sd_dropdown){width:inherit;height:100%}.time-period-selector.sc-time-period-selector select-dropdown.sc-time-period-selector::part(sd_dropdown_label){height:100%}.time-period-selector.sc-time-period-selector select-dropdown.sc-time-period-selector::part(sd_dropdown-button){padding:1rem;gap:1rem;justify-content:space-between;border:none;align-items:center;height:100%}.time-period-selector.sc-time-period-selector select-dropdown.sc-time-period-selector::part(sd_dropdown-content){width:100%;max-height:200px}";const c=p;const h={hours:"hour",days:"day",weeks:"week",months:"month",years:"year"};const u=class{constructor(o){e(this,o);this.timePeriodChanged=t(this,"timePeriodChanged",7);this.timePeriods=r;this.defaultSelectedPeriod=undefined;this.defaultSelectedNumber=undefined;this.hasError=false;this.selectedPeriod=this.defaultSelectedPeriod;this.selectedNumber=this.defaultSelectedNumber;this.numberOptions=this.calculateOptions(this.defaultSelectedPeriod||"hour").map((e=>({label:e.toString(),value:e.toString()})));this.timePeriodOptions=this.timePeriods.map((e=>({label:e.label,value:e.value})))}defaultSelectedPeriodChanged(e){this.selectedPeriod=e;this.updateNumberOptionsAndSelectedNumber(e)}defaultSelectedNumberChanged(e){this.selectedNumber=e}timePeriodsChanged(e){this.timePeriodOptions=[...e]}componentDidLoad(){this.selectedNumber=this.defaultSelectedNumber;this.selectedPeriod=this.defaultSelectedPeriod;const e=h[this.selectedPeriod]??this.selectedPeriod;const t=this.calculateOptions(e);this.numberOptions=t.map((e=>({label:e.toString(),value:e.toString()})))}calculateOptions(e){switch(e){case"hour":return Array.from({length:23},((e,t)=>t+1));case"minute":return Array.from({length:13},((e,t)=>t*5));case"day":return Array.from({length:30},((e,t)=>t+1));case"week":return Array.from({length:4},((e,t)=>t+1));case"month":return Array.from({length:12},((e,t)=>t+1));case"year":return Array.from({length:10},((e,t)=>t+1));default:return[]}}inputOptionChangedHandler(e){i("time-period-selector","inputOptionChangedHandler",e.detail);const{value:t,name:o}=e.detail;if(o==="time-number"){this.selectedNumber=t?parseInt(t):this.defaultSelectedNumber}const s={number:this.selectedNumber,period:this.selectedPeriod};this.timePeriodChanged.emit(s)}nylasFormDropdownChangedHandler(e){i("time-period-selector","nylasFormDropdownChangedHandler",e.detail);const{value:t,name:o}=e.detail;if(o==="time-period"){this.selectedPeriod=t;this.updateNumberOptionsAndSelectedNumber(t)}else if(o==="time-number"){this.selectedNumber=parseInt(t)}const s={number:this.selectedNumber,period:this.selectedPeriod};this.timePeriodChanged.emit(s)}updateNumberOptionsAndSelectedNumber(e){const t=this.calculateOptions(e);this.numberOptions=t.map((e=>({label:e.toString(),value:e.toString()})))}render(){return o("div",{key:"e482a321073bccd2cef6b05f4e6ad95cd3386b3a",class:"time-period-selector"},typeof this.selectedNumber=="number"&&o("input-dropdown",{id:"time-number",name:"time-number",class:{error:this.hasError},inputValue:this.selectedNumber.toString(),exportparts:"id_dropdown: tps__number-dropdown, id_dropdown-input: tps__number-dropdown-button, id_dropdown-content: tps__number-dropdown-content",options:this.numberOptions,defaultInputOption:this.numberOptions.find((e=>e.value==this.selectedNumber.toString()))}),typeof this.selectedPeriod=="string"&&o("select-dropdown",{id:"time-period",name:"time-period",options:this.timePeriodOptions,exportparts:"sd_dropdown: tps__period-dropdown, sd_dropdown-button: tps__period-dropdown-button, sd_dropdown-content: tps__period-dropdown-content",pluralizedLabel:this.selectedNumber>1?n.t(`time.${this.selectedPeriod}s`):n.t(`time.${this.selectedPeriod}`),defaultSelectedOption:this.timePeriodOptions?.find((e=>e.value==this.selectedPeriod)),withSearch:false}))}get host(){return s(this)}static get watchers(){return{defaultSelectedPeriod:["defaultSelectedPeriodChanged"],defaultSelectedNumber:["defaultSelectedNumberChanged"],timePeriods:["timePeriodsChanged"]}}};u.style=c;export{l as input_dropdown,u as time_period_selector};
|
|
2
|
-
//# sourceMappingURL=p-f99b677f.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["inputDropdownCss","InputDropdownStyle0","InputDropdown","this","defaultInputOption","options","optionsChangedHandler","newValue","oldValue","filteredOptions","getFilteredOptions","defaultSelectedOptionChangedHandler","label","selectedOption","inputValueChangedHandler","componentWillLoad","length","filterable","filter","option","value","toString","toLowerCase","includes","typedValue","toggleDropdown","isOpen","selectOption","inputOptionChanged","emit","name","handleOnInput","event","target","optionIndex","findIndex","scrollToViewWithinParent","childElement","el","shadowRoot","getElementById","parentElement","optionsRef","ariaActivedescendant","childRect","getBoundingClientRect","parentRect","top","scrollTop","bottom","handleSelectButtonKeyDown","key","preventDefault","inputRef","focus","handleClick","setTimeout","handleListboxKeydown","e","items","currentIndex","item","shiftKey","nextIndex","focusOption","prevIndex","index","elementId","element","scrollIntoView","behavior","block","handleComboboxKeyDown","shouldAutoScroll","handleOutsideClick","path","composedPath","isClickInside","render","h","class","part","type","id","dropbtn","open","inputValue","onClick","onKeyDown","onInput","ref","tabindex","role","map","focused","labelHTML","timePeriodSelectorCss","TimePeriodSelectorStyle0","pluralToSingular","hours","days","weeks","months","years","TimePeriodSelector","TIME_PERIODS","defaultSelectedPeriod","defaultSelectedNumber","calculateOptions","i","timePeriods","defaultSelectedPeriodChanged","selectedPeriod","updateNumberOptionsAndSelectedNumber","defaultSelectedNumberChanged","selectedNumber","timePeriodsChanged","timePeriodOptions","componentDidLoad","period","numberOptions","Array","from","_","inputOptionChangedHandler","debug","detail","parseInt","selected","number","timePeriodChanged","nylasFormDropdownChangedHandler","error","hasError","exportparts","find","pluralizedLabel","i18next","t","defaultSelectedOption","withSearch"],"sources":["src/components/design-system/input-dropdown/input-dropdown.scss?tag=input-dropdown&encapsulation=shadow","src/components/design-system/input-dropdown/input-dropdown.tsx","src/components/design-system/time-period-selector/time-period-selector.scss?tag=time-period-selector&encapsulation=scoped","src/components/design-system/time-period-selector/time-period-selector.tsx"],"sourcesContent":["@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n position: relative;\n\n @media #{$mobile} {\n position: unset;\n }\n\n @include default-css-variables;\n}\n\n.dropdown {\n display: inline-block;\n width: inherit;\n}\n\n.dropbtn {\n color: var(--nylas-base-800);\n padding: 10px;\n font-size: 16px;\n font-family: var(--nylas-font-family);\n cursor: pointer;\n display: flex;\n gap: 0.5rem;\n background: transparent;\n border: none;\n border-radius: var(--nylas-border-radius-2x);\n padding: 14px 16px;\n border-radius: var(--nylas-border-radius-2x);\n\n &.focus {\n background: transparent;\n }\n\n &:hover,\n &:active {\n outline: 1px solid var(--nylas-primary);\n }\n\n &:active {\n outline: 2px solid var(--nylas-primary);\n }\n\n span {\n &.chevron {\n display: flex;\n align-self: center;\n }\n\n &.open {\n transform: rotate(90deg);\n }\n\n &.closed {\n transform: rotate(270deg);\n }\n\n &.selected-option {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 144px;\n font-size: 14px;\n line-height: 20px;\n\n @media #{$mobile} {\n max-width: 124px;\n font-size: 16px;\n }\n }\n }\n}\n\n.dropdown-content {\n display: block;\n margin-top: 0.5rem;\n background-color: var(--nylas-base-0);\n max-width: 306px;\n width: max-content;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n\n box-shadow: 0px 4px 6px -2px rgba(0, 0, 0, 0.05);\n box-shadow: 0px 10px 15px -3px rgba(0, 0, 0, 0.1);\n}\n\n.search-box {\n border-bottom: 1px solid var(--nylas-base-200);\n padding: 10px;\n position: sticky;\n top: 0;\n background: var(--nylas-base-0);\n\n .icon {\n position: absolute;\n top: 1.25rem;\n left: 1.25rem;\n color: var(--nylas-base-300);\n }\n}\n\n.dropdown-content ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n\n li {\n padding: 16px, 12px, 16px, 12px;\n color: var(--nylas-base-900);\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n\n &:hover,\n &:focus {\n background-color: var(--nylas-base-100);\n }\n }\n}\n\n.dropdown-content .selected {\n background-color: #e7e7e7;\n}\n\ninput[type='text'] {\n width: -webkit-fill-available;\n padding: inherit;\n border: 1px solid #ccc;\n border-radius: 4px;\n position: sticky;\n background: no-repeat scroll 7px 7px;\n padding-left: 30px;\n background-size: 16px 16px;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\n\ninterface DropdownOption {\n labelHTML?: HTMLElement;\n label: string;\n value: string;\n}\n\n/**\n * The `input-dropdown` component is a dropdown that allows users to input an option and/or select from a list of options.\n * @part id_dropdown - The dropdown container\n * @part id_dropdown-input - The dropdown button\n * @part id_dropdown-content - The dropdown content\n */\n@Component({\n tag: 'input-dropdown',\n styleUrl: 'input-dropdown.scss',\n shadow: true,\n})\nexport class InputDropdown {\n @Element() el!: HTMLElement;\n\n private inputRef?: HTMLInputElement;\n private optionsRef!: HTMLElement;\n\n // Props\n /**\n * The name of the dropdown\n */\n @Prop() name!: string;\n /**\n * The options to display in the dropdown\n */\n @Prop() options: DropdownOption[] = [];\n /**\n * The default selected option\n */\n @Prop() defaultInputOption?: DropdownOption;\n /**\n * Should show search input\n */\n @Prop() inputValue!: string;\n /**\n * Show pluralized label for the selected option. This is s tring that is appended to the selected option label as a suffix.\n */\n @Prop() pluralizedLabel: string = '';\n\n /**\n * This is used to set if the dropdown should be filtered based on the input value.\n * If set to true, the dropdown will be filtered based on the input value.\n */\n @Prop() filterable: boolean = false;\n\n // States\n /**\n * The selected option\n */\n @State() selectedOption: DropdownOption | null = this.defaultInputOption || null;\n /**\n * The open state of the dropdown\n */\n @State() isOpen: boolean = false;\n\n /**\n * The typed value in the input\n */\n @State() typedValue: string = '';\n\n /**\n * The filtered options based on the search value\n */\n @State() filteredOptions: DropdownOption[] = [...this.options];\n /**\n * The aria-activedescendant attribute for the listbox element to indicate the currently active\n * option in the list box to screen readers. The value of aria-activedescendant is the ID of\n * the active option.\n */\n @State() ariaActivedescendant: string = '';\n\n /**\n * This is used to scroll to the input value.\n */\n @State() shouldAutoScroll: boolean = false;\n\n // Events\n /**\n * This event is fired when the selected option is changed\n */\n @Event({ bubbles: true, composed: true }) inputOptionChanged!: EventEmitter<{\n value: DropdownOption['value'];\n name: string;\n }>;\n\n @Watch('options')\n optionsChangedHandler(newValue: DropdownOption[], oldValue: DropdownOption[]) {\n if (newValue === oldValue) {\n return;\n }\n this.filteredOptions = this.getFilteredOptions(newValue);\n }\n\n @Watch('defaultInputOption')\n defaultSelectedOptionChangedHandler(newValue: DropdownOption, oldValue: DropdownOption) {\n if (newValue?.label === oldValue?.label) {\n return;\n }\n this.selectedOption = newValue;\n }\n\n @Watch('inputValue')\n inputValueChangedHandler(newValue: string, oldValue: string) {\n if (newValue === oldValue) {\n return;\n }\n this.filteredOptions = this.getFilteredOptions(this.options);\n }\n\n // Lifecycle methods\n componentWillLoad() {\n this.filteredOptions = this.getFilteredOptions(this.options);\n // Set the selected option to the first option if no option is selected\n if (!this.selectedOption && !!this.defaultInputOption) {\n this.selectedOption = this.defaultInputOption;\n }\n if (!this.selectedOption && this.options.length > 0) {\n this.selectedOption = this.options[0];\n }\n }\n\n // Methods\n getFilteredOptions(options): DropdownOption[] {\n if (!this.filterable) {\n return options;\n }\n\n return options.filter(\n option => option?.value?.toString().toLowerCase().includes(this.typedValue?.toLowerCase()) || option?.label?.toLowerCase().includes(this.typedValue?.toLowerCase()),\n );\n }\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n }\n\n selectOption(option: DropdownOption): void {\n this.selectedOption = option;\n this.toggleDropdown();\n this.inputOptionChanged.emit({\n value: option.value,\n name: this.name,\n });\n }\n\n handleOnInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.typedValue = value;\n const optionIndex = this.options.findIndex(option => option.label.toLowerCase().includes(value.toLowerCase()));\n if (optionIndex > -1) {\n this.scrollToViewWithinParent(optionIndex);\n }\n this.inputOptionChanged.emit({\n value,\n name: this.name,\n });\n }\n\n scrollToViewWithinParent(optionIndex: number) {\n const option = this.options[optionIndex];\n const childElement = this.el.shadowRoot?.getElementById(option.value.toString()) as HTMLLIElement;\n const parentElement = this.optionsRef;\n\n this.ariaActivedescendant = option.value.toString();\n if (!childElement || !parentElement) return;\n // Scroll child into view within parent\n const childRect = childElement.getBoundingClientRect();\n const parentRect = parentElement.getBoundingClientRect();\n\n if (childRect.top < parentRect.top) {\n // Child is above the visible area of the parent\n parentElement.scrollTop -= parentRect.top - childRect.top;\n } else if (childRect.bottom > parentRect.bottom) {\n // Child is below the visible area of the parent\n parentElement.scrollTop += childRect.bottom - parentRect.bottom;\n }\n }\n\n handleSelectButtonKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n event.preventDefault();\n if (!this.isOpen) {\n this.toggleDropdown();\n }\n this.inputRef?.focus();\n break;\n case 'Escape':\n this.isOpen = false;\n break;\n }\n }\n\n handleClick(event: Event): void {\n if (this.isOpen) {\n const value = (event.target as HTMLInputElement).value;\n const optionIndex = this.options.findIndex(option => option.label.toLowerCase().includes(value.toLowerCase()));\n if (optionIndex > -1) {\n setTimeout(() => {\n this.scrollToViewWithinParent(optionIndex);\n }, 10);\n }\n }\n }\n\n handleListboxKeydown(e) {\n const items = this.filteredOptions;\n const currentIndex = items.findIndex(item => item.value === this.ariaActivedescendant);\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && !e.shiftKey)) {\n e.preventDefault();\n if (currentIndex === items.length - 1) {\n this.ariaActivedescendant = '';\n this.inputRef?.focus();\n return;\n }\n const nextIndex = currentIndex + 1 < items.length ? currentIndex + 1 : 0;\n this.ariaActivedescendant = items[nextIndex].value;\n this.focusOption(nextIndex);\n } else if (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) {\n e.preventDefault();\n if (currentIndex === 0) {\n this.ariaActivedescendant = '';\n this.inputRef?.focus();\n return;\n }\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : items.length - 1;\n this.ariaActivedescendant = items[prevIndex].value;\n this.focusOption(prevIndex);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (this.ariaActivedescendant) {\n this.selectOption(items[currentIndex]);\n }\n } else if (e.key === 'Escape') {\n this.isOpen = false;\n }\n }\n\n focusOption(index) {\n const option = this.filteredOptions[index];\n if (!option) return; // Guard clause in case index is out of bounds\n\n const elementId = option.value;\n const element = this.el.shadowRoot?.getElementById(elementId) as HTMLLIElement;\n\n if (element) {\n element.focus(); // Set focus on the element\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n\n handleComboboxKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || (event.key == 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n if (!this.isOpen) {\n this.isOpen = true;\n this.shouldAutoScroll = true;\n return;\n }\n this.ariaActivedescendant = this.filteredOptions[0].value;\n this.focusOption(0);\n } else if (event.key === 'ArrowUp' || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n this.ariaActivedescendant = this.filteredOptions[this.filteredOptions.length - 1].value;\n this.focusOption(this.filteredOptions.length - 1);\n } else if (event.key === 'Escape') {\n this.isOpen = false;\n }\n }\n\n // Event listeners\n @Listen('click', { target: 'document', capture: true })\n handleOutsideClick(event: MouseEvent) {\n // Get the path of the event\n const path = event.composedPath();\n\n // Check if the path includes the host element\n const isClickInside = path.includes(this.el);\n\n if (!isClickInside && this.isOpen) {\n this.isOpen = false;\n }\n }\n\n render() {\n return (\n <div class=\"dropdown\" part=\"id_dropdown\">\n <input\n type=\"text\"\n name={this.name}\n id={this.name}\n part=\"id_dropdown-input\"\n class={{ dropbtn: true, open: this.isOpen }}\n value={this.inputValue}\n onClick={(e: Event) => {\n this.toggleDropdown();\n this.shouldAutoScroll = true;\n this.handleClick(e);\n }}\n aria-haspopup=\"listbox\"\n aria-label={this.name}\n aria-expanded={this.isOpen ? 'true' : 'false'}\n onKeyDown={e => this.handleComboboxKeyDown(e)}\n onInput={event => this.handleOnInput(event)}\n />\n {this.isOpen ? (\n <div class=\"dropdown-content\" part=\"id_dropdown-content\" ref={el => (this.optionsRef = el as HTMLElement)}>\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant} onKeyDown={e => this.handleListboxKeydown(e)}>\n {this.filteredOptions.map(option => (\n <li\n tabindex=\"0\"\n key={option.value}\n id={option.value}\n onClick={() => this.selectOption(option)}\n role=\"option\"\n class={{\n focused: this.ariaActivedescendant === option.value.toString(),\n }}\n >\n {option.labelHTML ? option.labelHTML : option.label}\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </div>\n );\n }\n}\n",".time-period-selector {\n display: grid;\n gap: 0.5rem;\n grid-template-columns: auto 1fr;\n\n select-dropdown,\n input-dropdown {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n }\n\n select-dropdown {\n width: 116px;\n }\n\n input-dropdown {\n width: 84px;\n display: flex;\n align-items: center;\n }\n\n select-dropdown#time-period::part(sd_dropdown-button) {\n width: 100%;\n }\n\n input-dropdown::part(id_dropdown) {\n width: inherit;\n height: 100%;\n }\n\n input-dropdown#time-number::part(id_dropdown-input) {\n border: none;\n border-radius: var(--nylas-border-radius-2x);\n }\n\n input-dropdown#time-number.error::part(id_dropdown-input) {\n border: 1px solid var(--nylas-error);\n }\n\n input-dropdown {\n &:hover {\n outline: 1px solid var(--nylas-primary);\n border: none;\n }\n &::part(id_dropdown-input) {\n padding: 16px;\n gap: 1rem;\n &:hover {\n border: none;\n outline: none;\n }\n }\n }\n\n input-dropdown::part(id_dropdown-content) {\n width: 100%;\n max-height: 200px;\n }\n\n select-dropdown::part(sd_dropdown) {\n width: inherit;\n height: 100%;\n }\n\n select-dropdown::part(sd_dropdown_label) {\n height: 100%;\n }\n\n select-dropdown::part(sd_dropdown-button) {\n padding: 1rem;\n gap: 1rem;\n justify-content: space-between;\n border: none;\n align-items: center;\n height: 100%;\n }\n\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-height: 200px;\n }\n}\n","import { TIME_PERIODS } from '@/common/constants';\nimport { debug } from '@/utils/utils';\nimport { TimePeriod } from '@nylas/core/lib';\nimport { Element, Event, EventEmitter, Watch } from '@stencil/core';\nimport { Component, h, Listen, Prop, State } from '@stencil/core';\nimport i18next from 'i18next';\n\nconst pluralToSingular = {\n hours: 'hour',\n days: 'day',\n weeks: 'week',\n months: 'month',\n years: 'year',\n};\n\n/**\n * The time period selector component allows the user to select a time period and a number value for that time period.\n */\n@Component({\n tag: 'time-period-selector',\n styleUrl: 'time-period-selector.scss',\n scoped: true,\n})\nexport class TimePeriodSelector {\n @Element() host!: HTMLElement;\n\n // The possible values for the time periods dropdown\n @Prop() timePeriods: TimePeriod[] = TIME_PERIODS;\n\n /**\n * The default selected time period.\n */\n @Prop() defaultSelectedPeriod!: string;\n\n /**\n * The default selected number.\n */\n @Prop() defaultSelectedNumber!: number;\n\n /**\n * The error state\n */\n @Prop() hasError: boolean = false;\n\n /**\n * The currently selected time period\n */\n @State() selectedPeriod: string = this.defaultSelectedPeriod;\n\n /**\n * The currently selected number of the time period\n */\n @State() selectedNumber: number = this.defaultSelectedNumber;\n\n /*\n * The options for the number dropdown, to be calculated based on the selectedPeriod\n */\n @State() numberOptions: { label: string; value: string }[] = this.calculateOptions(this.defaultSelectedPeriod || 'hour').map(i => {\n return {\n label: i.toString(),\n value: i.toString(),\n };\n });\n\n /**\n * The options for the time period dropdown\n */\n @State() timePeriodOptions = this.timePeriods.map(i => {\n return {\n label: i.label,\n value: i.value,\n };\n });\n\n @Watch('defaultSelectedPeriod')\n defaultSelectedPeriodChanged(newValue: string) {\n this.selectedPeriod = newValue;\n this.updateNumberOptionsAndSelectedNumber(newValue);\n }\n\n @Watch('defaultSelectedNumber')\n defaultSelectedNumberChanged(newValue: number) {\n this.selectedNumber = newValue;\n }\n\n @Watch('timePeriods')\n timePeriodsChanged(newValue: { label: string; value: string }[]) {\n this.timePeriodOptions = [...newValue];\n }\n\n componentDidLoad() {\n this.selectedNumber = this.defaultSelectedNumber;\n this.selectedPeriod = this.defaultSelectedPeriod;\n const period = pluralToSingular[this.selectedPeriod] ?? this.selectedPeriod;\n const numberOptions = this.calculateOptions(period);\n this.numberOptions = numberOptions.map(i => {\n return {\n label: i.toString(),\n value: i.toString(),\n };\n });\n }\n\n @Event() timePeriodChanged!: EventEmitter<{ number: number; period: string }>;\n\n private calculateOptions(period: string): number[] {\n switch (period) {\n case 'hour':\n return Array.from({ length: 23 }, (_, i) => i + 1);\n case 'minute':\n return Array.from({ length: 13 }, (_, i) => i * 5);\n case 'day':\n return Array.from({ length: 30 }, (_, i) => i + 1);\n case 'week':\n return Array.from({ length: 4 }, (_, i) => i + 1);\n case 'month':\n return Array.from({ length: 12 }, (_, i) => i + 1);\n case 'year':\n return Array.from({ length: 10 }, (_, i) => i + 1);\n default:\n return [];\n }\n }\n\n @Listen('inputOptionChanged')\n inputOptionChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('time-period-selector', 'inputOptionChangedHandler', event.detail);\n const { value, name } = event.detail;\n if (name === 'time-number') {\n this.selectedNumber = value ? parseInt(value) : this.defaultSelectedNumber;\n }\n const selected = {\n number: this.selectedNumber,\n period: this.selectedPeriod,\n };\n this.timePeriodChanged.emit(selected);\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('time-period-selector', 'nylasFormDropdownChangedHandler', event.detail);\n const { value, name } = event.detail;\n if (name === 'time-period') {\n this.selectedPeriod = value;\n this.updateNumberOptionsAndSelectedNumber(value);\n } else if (name === 'time-number') {\n this.selectedNumber = parseInt(value);\n }\n const selected = {\n number: this.selectedNumber,\n period: this.selectedPeriod,\n };\n this.timePeriodChanged.emit(selected);\n }\n\n updateNumberOptionsAndSelectedNumber(period: string) {\n const numberOptions = this.calculateOptions(period);\n this.numberOptions = numberOptions.map(i => {\n return {\n label: i.toString(),\n value: i.toString(),\n };\n });\n }\n\n render() {\n return (\n <div class=\"time-period-selector\">\n {typeof this.selectedNumber == 'number' && (\n <input-dropdown\n id=\"time-number\"\n name={'time-number'}\n class={{ error: this.hasError }}\n inputValue={this.selectedNumber.toString()}\n exportparts=\"id_dropdown: tps__number-dropdown, id_dropdown-input: tps__number-dropdown-button, id_dropdown-content: tps__number-dropdown-content\"\n options={this.numberOptions}\n defaultInputOption={this.numberOptions.find(i => i.value == this.selectedNumber.toString())}\n />\n )}\n {typeof this.selectedPeriod == 'string' && (\n <select-dropdown\n id=\"time-period\"\n name={'time-period'}\n options={this.timePeriodOptions}\n exportparts=\"sd_dropdown: tps__period-dropdown, sd_dropdown-button: tps__period-dropdown-button, sd_dropdown-content: tps__period-dropdown-content\"\n pluralizedLabel={this.selectedNumber > 1 ? i18next.t(`time.${this.selectedPeriod}s`) : i18next.t(`time.${this.selectedPeriod}`)}\n defaultSelectedOption={this.timePeriodOptions?.find(i => i.value == this.selectedPeriod)}\n withSearch={false}\n />\n )}\n </div>\n );\n }\n}\n"],"mappings":"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"}
|
|
File without changes
|