@nordhealth/components 4.15.0 → 4.16.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 (38) hide show
  1. package/custom-elements.json +3325 -2856
  2. package/lib/{Calendar-CL_eqbiT.js → Calendar-CKgiq2S1.js} +2 -2
  3. package/lib/{Calendar-CL_eqbiT.js.map → Calendar-CKgiq2S1.js.map} +1 -1
  4. package/lib/Calendar.js +1 -1
  5. package/lib/DatePicker.js +1 -1
  6. package/lib/DatePicker.js.map +1 -1
  7. package/lib/Dropdown.js +1 -1
  8. package/lib/Dropdown.js.map +1 -1
  9. package/lib/DropdownItem-tmJQrv7d.js +2 -0
  10. package/lib/DropdownItem-tmJQrv7d.js.map +1 -0
  11. package/lib/DropdownItem.js +1 -1
  12. package/lib/DropdownSubmenu.js +2 -0
  13. package/lib/DropdownSubmenu.js.map +1 -0
  14. package/lib/LocalizeController.js +1 -1
  15. package/lib/LocalizeController.js.map +1 -1
  16. package/lib/Message.js +1 -1
  17. package/lib/bundle.js +13 -13
  18. package/lib/bundle.js.map +1 -1
  19. package/lib/fi-fi.js +1 -1
  20. package/lib/fi-fi.js.map +1 -1
  21. package/lib/index.js +1 -1
  22. package/lib/localization3.js +1 -1
  23. package/lib/localization3.js.map +1 -1
  24. package/lib/react.d.ts +20 -0
  25. package/lib/src/date-picker/DatePicker.d.ts +8 -0
  26. package/lib/src/date-picker/localization.d.ts +2 -0
  27. package/lib/src/dropdown/Dropdown.d.ts +31 -0
  28. package/lib/src/dropdown-submenu/DropdownSubmenu.d.ts +76 -0
  29. package/lib/src/index.d.ts +1 -0
  30. package/lib/src/localization/LocalizeController.d.ts +3 -1
  31. package/lib/src/localization/en-us.d.ts +2 -0
  32. package/lib/src/localization/translation.d.ts +14 -2
  33. package/lib/translation.js +1 -1
  34. package/lib/translation.js.map +1 -1
  35. package/lib/vue.d.ts +19 -0
  36. package/package.json +4 -4
  37. package/lib/DropdownItem-Cy6lHtoG.js +0 -2
  38. package/lib/DropdownItem-Cy6lHtoG.js.map +0 -1
package/lib/fi-fi.js CHANGED
@@ -1,2 +1,2 @@
1
- const a={$lang:"fi",$name:"Suomi",$dir:"ltr","nord-command-menu":{instructions:"Paina 'Enter' vahvistaaksesi valinnan tai 'Escape' peruuttaaksesi",inputLabel:"Kirjoita komento jonka haluat suorittaa.",footerArrowKeys:"Siirry",footerEnterKey:"Valitse",footerEscapeKey:"Esc sulje",footerBackspaceKey:"Siirry takaisin",noResults:a=>`Ei tuloksia haulle "${a}"`,tip:"Vinkki: jotkin haut vaativat tarkan hakutermin. Koita kirjoittaa koko hakutermi kokonaisuudessaan, tai kokeile toista sanaa tai fraasia.",placeholder:"Kirjoita komento tai hakusana…"},"nord-calendar":{prevMonthLabel:"Edellinen kuukausi",nextMonthLabel:"Seuraava kuukausi",monthSelectLabel:"Kuukausi",yearSelectLabel:"Vuosi"},"nord-date-picker":{modalHeading:"Valitse päivämäärä",closeLabel:"Sulje ikkuna",buttonLabel:"Valitse päivämäärä",selectedDateMessage:"Valittu päivämäärä on"},"nord-modal":{closeLabel:"Sulje ikkuna"},"nord-nav-toggle":{label:"Näytä/Piilota valikko"},"nord-textarea":{remainingCharacters:a=>`${a} merkkiä jäljellä`},"nord-notification":{dismissLabel:"Sulje ilmoitus"},"nord-message":{unreadLabel:"Lukematon"},"nord-tag":{removeLabel:"Poista"}};export{a as default};
1
+ const a={$lang:"fi",$name:"Suomi",$dir:"ltr","nord-command-menu":{instructions:"Paina 'Enter' vahvistaaksesi valinnan tai 'Escape' peruuttaaksesi",inputLabel:"Kirjoita komento jonka haluat suorittaa.",footerArrowKeys:"Siirry",footerEnterKey:"Valitse",footerEscapeKey:"Esc sulje",footerBackspaceKey:"Siirry takaisin",noResults:a=>`Ei tuloksia haulle "${a}"`,tip:"Vinkki: jotkin haut vaativat tarkan hakutermin. Koita kirjoittaa koko hakutermi kokonaisuudessaan, tai kokeile toista sanaa tai fraasia.",placeholder:"Kirjoita komento tai hakusana…"},"nord-calendar":{prevMonthLabel:"Edellinen kuukausi",nextMonthLabel:"Seuraava kuukausi",monthSelectLabel:"Kuukausi",yearSelectLabel:"Vuosi"},"nord-date-picker":{modalHeading:"Valitse päivämäärä",closeLabel:"Sulje ikkuna",buttonLabel:"Valitse päivämäärä",selectedDateMessage:"Valittu päivämäärä on",dateOutOfMinBound:a=>`Päivämäärä on oltava ${a} tai myöhemmin`,dateOutOfMaxBound:a=>`Päivämäärä on oltava ${a} tai aikaisemmin`},"nord-modal":{closeLabel:"Sulje ikkuna"},"nord-nav-toggle":{label:"Näytä/Piilota valikko"},"nord-textarea":{remainingCharacters:a=>`${a} merkkiä jäljellä`},"nord-notification":{dismissLabel:"Sulje ilmoitus"},"nord-message":{unreadLabel:"Lukematon"},"nord-tag":{removeLabel:"Poista"}};export{a as default};
2
2
  //# sourceMappingURL=fi-fi.js.map
package/lib/fi-fi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fi-fi.js","sources":["../src/localization/fi-fi.ts"],"sourcesContent":["import type { Translation } from './translation.js'\n\nconst fi: Translation = {\n '$lang': 'fi',\n '$name': 'Suomi',\n '$dir': 'ltr',\n\n 'nord-command-menu': {\n instructions: 'Paina \\'Enter\\' vahvistaaksesi valinnan tai \\'Escape\\' peruuttaaksesi',\n inputLabel: 'Kirjoita komento jonka haluat suorittaa.',\n footerArrowKeys: 'Siirry',\n footerEnterKey: 'Valitse',\n footerEscapeKey: 'Esc sulje',\n footerBackspaceKey: 'Siirry takaisin',\n noResults: searchTerm => `Ei tuloksia haulle \"${searchTerm}\"`,\n tip: 'Vinkki: jotkin haut vaativat tarkan hakutermin. Koita kirjoittaa koko hakutermi kokonaisuudessaan, tai kokeile toista sanaa tai fraasia.',\n placeholder: 'Kirjoita komento tai hakusana…',\n },\n\n 'nord-calendar': {\n prevMonthLabel: 'Edellinen kuukausi',\n nextMonthLabel: 'Seuraava kuukausi',\n monthSelectLabel: 'Kuukausi',\n yearSelectLabel: 'Vuosi',\n },\n\n 'nord-date-picker': {\n modalHeading: 'Valitse päivämäärä',\n closeLabel: 'Sulje ikkuna',\n buttonLabel: 'Valitse päivämäärä',\n selectedDateMessage: 'Valittu päivämäärä on',\n },\n\n 'nord-modal': {\n closeLabel: 'Sulje ikkuna',\n },\n\n 'nord-nav-toggle': {\n label: 'Näytä/Piilota valikko',\n },\n\n 'nord-textarea': {\n remainingCharacters: (remaining: number) => `${remaining} merkkiä jäljellä`,\n },\n\n 'nord-notification': {\n dismissLabel: 'Sulje ilmoitus',\n },\n\n 'nord-message': {\n unreadLabel: 'Lukematon',\n },\n\n 'nord-tag': {\n removeLabel: 'Poista',\n },\n}\n\nexport default fi\n"],"names":["fi","$lang","$name","$dir","instructions","inputLabel","footerArrowKeys","footerEnterKey","footerEscapeKey","footerBackspaceKey","noResults","searchTerm","tip","placeholder","prevMonthLabel","nextMonthLabel","monthSelectLabel","yearSelectLabel","modalHeading","closeLabel","buttonLabel","selectedDateMessage","label","remainingCharacters","remaining","dismissLabel","unreadLabel","removeLabel"],"mappings":"AAEA,MAAMA,EAAkB,CACtBC,MAAS,KACTC,MAAS,QACTC,KAAQ,MAER,oBAAqB,CACnBC,aAAc,oEACdC,WAAY,2CACZC,gBAAiB,SACjBC,eAAgB,UAChBC,gBAAiB,YACjBC,mBAAoB,kBACpBC,UAAWC,GAAc,uBAAuBA,KAChDC,IAAK,2IACLC,YAAa,kCAGf,gBAAiB,CACfC,eAAgB,qBAChBC,eAAgB,oBAChBC,iBAAkB,WAClBC,gBAAiB,SAGnB,mBAAoB,CAClBC,aAAc,qBACdC,WAAY,eACZC,YAAa,qBACbC,oBAAqB,yBAGvB,aAAc,CACZF,WAAY,gBAGd,kBAAmB,CACjBG,MAAO,yBAGT,gBAAiB,CACfC,oBAAsBC,GAAsB,GAAGA,sBAGjD,oBAAqB,CACnBC,aAAc,kBAGhB,eAAgB,CACdC,YAAa,aAGf,WAAY,CACVC,YAAa"}
1
+ {"version":3,"file":"fi-fi.js","sources":["../src/localization/fi-fi.ts"],"sourcesContent":["import type { Translation } from './translation.js'\n\nconst fi: Translation = {\n '$lang': 'fi',\n '$name': 'Suomi',\n '$dir': 'ltr',\n\n 'nord-command-menu': {\n instructions: 'Paina \\'Enter\\' vahvistaaksesi valinnan tai \\'Escape\\' peruuttaaksesi',\n inputLabel: 'Kirjoita komento jonka haluat suorittaa.',\n footerArrowKeys: 'Siirry',\n footerEnterKey: 'Valitse',\n footerEscapeKey: 'Esc sulje',\n footerBackspaceKey: 'Siirry takaisin',\n noResults: searchTerm => `Ei tuloksia haulle \"${searchTerm}\"`,\n tip: 'Vinkki: jotkin haut vaativat tarkan hakutermin. Koita kirjoittaa koko hakutermi kokonaisuudessaan, tai kokeile toista sanaa tai fraasia.',\n placeholder: 'Kirjoita komento tai hakusana…',\n },\n\n 'nord-calendar': {\n prevMonthLabel: 'Edellinen kuukausi',\n nextMonthLabel: 'Seuraava kuukausi',\n monthSelectLabel: 'Kuukausi',\n yearSelectLabel: 'Vuosi',\n },\n\n 'nord-date-picker': {\n modalHeading: 'Valitse päivämäärä',\n closeLabel: 'Sulje ikkuna',\n buttonLabel: 'Valitse päivämäärä',\n selectedDateMessage: 'Valittu päivämäärä on',\n dateOutOfMinBound: (minDate: string) => `Päivämäärä on oltava ${minDate} tai myöhemmin`,\n dateOutOfMaxBound: (maxDate: string) => `Päivämäärä on oltava ${maxDate} tai aikaisemmin`,\n },\n\n 'nord-modal': {\n closeLabel: 'Sulje ikkuna',\n },\n\n 'nord-nav-toggle': {\n label: 'Näytä/Piilota valikko',\n },\n\n 'nord-textarea': {\n remainingCharacters: (remaining: number) => `${remaining} merkkiä jäljellä`,\n },\n\n 'nord-notification': {\n dismissLabel: 'Sulje ilmoitus',\n },\n\n 'nord-message': {\n unreadLabel: 'Lukematon',\n },\n\n 'nord-tag': {\n removeLabel: 'Poista',\n },\n}\n\nexport default fi\n"],"names":["fi","$lang","$name","$dir","instructions","inputLabel","footerArrowKeys","footerEnterKey","footerEscapeKey","footerBackspaceKey","noResults","searchTerm","tip","placeholder","prevMonthLabel","nextMonthLabel","monthSelectLabel","yearSelectLabel","modalHeading","closeLabel","buttonLabel","selectedDateMessage","dateOutOfMinBound","minDate","dateOutOfMaxBound","maxDate","label","remainingCharacters","remaining","dismissLabel","unreadLabel","removeLabel"],"mappings":"AAEA,MAAMA,EAAkB,CACtBC,MAAS,KACTC,MAAS,QACTC,KAAQ,MAER,oBAAqB,CACnBC,aAAc,oEACdC,WAAY,2CACZC,gBAAiB,SACjBC,eAAgB,UAChBC,gBAAiB,YACjBC,mBAAoB,kBACpBC,UAAWC,GAAc,uBAAuBA,KAChDC,IAAK,2IACLC,YAAa,kCAGf,gBAAiB,CACfC,eAAgB,qBAChBC,eAAgB,oBAChBC,iBAAkB,WAClBC,gBAAiB,SAGnB,mBAAoB,CAClBC,aAAc,qBACdC,WAAY,eACZC,YAAa,qBACbC,oBAAqB,wBACrBC,kBAAoBC,GAAoB,wBAAwBA,kBAChEC,kBAAoBC,GAAoB,wBAAwBA,qBAGlE,aAAc,CACZN,WAAY,gBAGd,kBAAmB,CACjBO,MAAO,yBAGT,gBAAiB,CACfC,oBAAsBC,GAAsB,GAAGA,sBAGjD,oBAAqB,CACnBC,aAAc,kBAGhB,eAAgB,CACdC,YAAa,aAGf,WAAY,CACVC,YAAa"}
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as Avatar}from"./Avatar.js";export{default as Badge}from"./Badge.js";export{default as Banner}from"./Banner.js";export{default as ButtonGroup}from"./ButtonGroup.js";export{default as Button}from"./Button.js";export{C as Calendar}from"./Calendar-CL_eqbiT.js";export{default as Card}from"./Card.js";export{default as Checkbox}from"./Checkbox.js";export{default as CommandMenu}from"./CommandMenu.js";export{default as CommandMenuAction}from"./CommandMenuAction.js";export{default as DatePicker}from"./DatePicker.js";export{default as Divider}from"./Divider.js";export{default as Drawer}from"./Drawer.js";export{default as DropdownGroup}from"./DropdownGroup.js";export{default as DropdownItem}from"./DropdownItem.js";export{default as Dropdown}from"./Dropdown.js";export{default as EmptyState}from"./EmptyState.js";export{default as Fieldset}from"./Fieldset.js";export{default as Footer}from"./Footer.js";export{default as Header}from"./Header.js";export{default as Icon}from"./Icon.js";export{default as Input}from"./Input.js";export{default as Layout}from"./Layout.js";export{isTranslationRegistered,registerTranslation}from"./translation.js";export{default as Message}from"./Message.js";export{default as Modal,ModalCancelEvent,ModalCloseEvent}from"./Modal.js";export{default as NavGroup}from"./NavGroup.js";export{default as NavItem}from"./NavItem.js";export{N as NavToggle}from"./NavToggle-DL74d1aQ.js";export{default as Navigation}from"./Navigation.js";export{default as NotificationGroup}from"./NotificationGroup.js";export{default as Notification}from"./Notification.js";export{P as Popout}from"./Popout-vR6LxNS9.js";export{default as ProgressBar}from"./ProgressBar.js";export{default as Progress}from"./Progress.js";export{default as Qrcode}from"./Qrcode.js";export{default as Radio}from"./Radio.js";export{default as Range}from"./Range.js";export{default as SegmentedControlItem}from"./SegmentedControlItem.js";export{default as SegmentedControl}from"./SegmentedControl.js";export{default as Select}from"./Select.js";export{default as Skeleton}from"./Skeleton.js";export{default as Spinner}from"./Spinner.js";export{default as Stack}from"./Stack.js";export{default as TabGroup}from"./TabGroup.js";export{default as TabPanel}from"./TabPanel.js";export{default as Tab}from"./Tab.js";export{default as Table}from"./Table.js";export{default as TagGroup}from"./TagGroup.js";export{default as Tag}from"./Tag.js";export{default as Textarea}from"./Textarea.js";export{default as ToastGroup}from"./ToastGroup.js";export{default as Toast}from"./Toast.js";export{default as Toggle}from"./Toggle.js";export{default as Tooltip}from"./Tooltip.js";export{default as TopBar}from"./TopBar.js";export{default as VisuallyHidden}from"./VisuallyHidden.js";import"./tslib.es6-CmLYFWVC.js";import"lit";import"lit/decorators.js";import"./observe-D0n0zOfU.js";import"./fsm-Bq5jMQrK.js";import"./Component-DSU3Qp0O.js";import"lit/directives/class-map.js";import"./DirectionController-ChvNGESZ.js";import"./SlotController-Z6eG7LSZ.js";import"./EventController-BBOmvfLa.js";import"lit/directives/ref.js";import"./LightDomController-DIwtVelV.js";import"./cond-CI1KbneT.js";import"./FocusableMixin-BlQLNPdJ.js";import"./InputMixin-LetXsCyv.js";import"lit/directives/repeat.js";import"./tinykeys.module-_6MZt7MP.js";import"./collection-Dvg2XbxV.js";import"./dates-CAAlPKZi.js";import"./number-Dg2vCfGd.js";import"./LocalizeController.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";import"./DateSelectEvent.js";import"./events-Bv6wNHwJ.js";import"./interface-checked-small-BtICPEsp.js";import"lit/directives/if-defined.js";import"./FormAssociatedMixin-DFL7yabe.js";import"./FormDataController-OUt5L5uC.js";import"./SizeMixin-CU9cLbLC.js";import"./FormField--eLuhPue.js";import"./LightDismissController-4pH8cdko.js";import"./ShortcutController-BIb3WGzH.js";import"./KeyboardController.js";import"./SelectEvent.js";import"./interface-close-small-CnpAFMO3.js";import"./TextField-BdEdZ0_b.js";import"./date-adapter.js";import"./DropdownItem-Cy6lHtoG.js";import"lit/directives/unsafe-html.js";import"./IconManager.js";import"lit/directives/style-map.js";import"./AutocompleteMixin-D8eiOxvO.js";import"./TextSelectableMixin-Cfv__lHS.js";import"./Sticky-DqnqENYN.js";import"./ModalController.js";import"./ScrollbarController-BFC67Y2x.js";import"./NotificationMixin-DOUQsx7N.js";import"./positioning-D-K8Mueq.js";import"./LightSlotController-Coyy4nqS.js";
1
+ export{default as Avatar}from"./Avatar.js";export{default as Badge}from"./Badge.js";export{default as Banner}from"./Banner.js";export{default as ButtonGroup}from"./ButtonGroup.js";export{default as Button}from"./Button.js";export{C as Calendar}from"./Calendar-CKgiq2S1.js";export{default as Card}from"./Card.js";export{default as Checkbox}from"./Checkbox.js";export{default as CommandMenu}from"./CommandMenu.js";export{default as CommandMenuAction}from"./CommandMenuAction.js";export{default as DatePicker}from"./DatePicker.js";export{default as Divider}from"./Divider.js";export{default as Drawer}from"./Drawer.js";export{default as DropdownGroup}from"./DropdownGroup.js";export{default as DropdownItem}from"./DropdownItem.js";export{default as DropdownSubmenu}from"./DropdownSubmenu.js";export{default as Dropdown}from"./Dropdown.js";export{default as EmptyState}from"./EmptyState.js";export{default as Fieldset}from"./Fieldset.js";export{default as Footer}from"./Footer.js";export{default as Header}from"./Header.js";export{default as Icon}from"./Icon.js";export{default as Input}from"./Input.js";export{default as Layout}from"./Layout.js";export{isTranslationRegistered,registerTranslation}from"./translation.js";export{default as Message}from"./Message.js";export{default as Modal,ModalCancelEvent,ModalCloseEvent}from"./Modal.js";export{default as NavGroup}from"./NavGroup.js";export{default as NavItem}from"./NavItem.js";export{N as NavToggle}from"./NavToggle-DL74d1aQ.js";export{default as Navigation}from"./Navigation.js";export{default as NotificationGroup}from"./NotificationGroup.js";export{default as Notification}from"./Notification.js";export{P as Popout}from"./Popout-vR6LxNS9.js";export{default as ProgressBar}from"./ProgressBar.js";export{default as Progress}from"./Progress.js";export{default as Qrcode}from"./Qrcode.js";export{default as Radio}from"./Radio.js";export{default as Range}from"./Range.js";export{default as SegmentedControlItem}from"./SegmentedControlItem.js";export{default as SegmentedControl}from"./SegmentedControl.js";export{default as Select}from"./Select.js";export{default as Skeleton}from"./Skeleton.js";export{default as Spinner}from"./Spinner.js";export{default as Stack}from"./Stack.js";export{default as TabGroup}from"./TabGroup.js";export{default as TabPanel}from"./TabPanel.js";export{default as Tab}from"./Tab.js";export{default as Table}from"./Table.js";export{default as TagGroup}from"./TagGroup.js";export{default as Tag}from"./Tag.js";export{default as Textarea}from"./Textarea.js";export{default as ToastGroup}from"./ToastGroup.js";export{default as Toast}from"./Toast.js";export{default as Toggle}from"./Toggle.js";export{default as Tooltip}from"./Tooltip.js";export{default as TopBar}from"./TopBar.js";export{default as VisuallyHidden}from"./VisuallyHidden.js";import"./tslib.es6-CmLYFWVC.js";import"lit";import"lit/decorators.js";import"./observe-D0n0zOfU.js";import"./fsm-Bq5jMQrK.js";import"./Component-DSU3Qp0O.js";import"lit/directives/class-map.js";import"./DirectionController-ChvNGESZ.js";import"./SlotController-Z6eG7LSZ.js";import"./EventController-BBOmvfLa.js";import"lit/directives/ref.js";import"./LightDomController-DIwtVelV.js";import"./cond-CI1KbneT.js";import"./FocusableMixin-BlQLNPdJ.js";import"./InputMixin-LetXsCyv.js";import"lit/directives/repeat.js";import"./tinykeys.module-_6MZt7MP.js";import"./collection-Dvg2XbxV.js";import"./dates-CAAlPKZi.js";import"./number-Dg2vCfGd.js";import"./LocalizeController.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";import"./DateSelectEvent.js";import"./events-Bv6wNHwJ.js";import"./interface-checked-small-BtICPEsp.js";import"lit/directives/if-defined.js";import"./FormAssociatedMixin-DFL7yabe.js";import"./FormDataController-OUt5L5uC.js";import"./SizeMixin-CU9cLbLC.js";import"./FormField--eLuhPue.js";import"./LightDismissController-4pH8cdko.js";import"./ShortcutController-BIb3WGzH.js";import"./KeyboardController.js";import"./SelectEvent.js";import"./interface-close-small-CnpAFMO3.js";import"./TextField-BdEdZ0_b.js";import"./date-adapter.js";import"./DropdownItem-tmJQrv7d.js";import"lit/directives/unsafe-html.js";import"./IconManager.js";import"lit/directives/style-map.js";import"./AutocompleteMixin-D8eiOxvO.js";import"./TextSelectableMixin-Cfv__lHS.js";import"./Sticky-DqnqENYN.js";import"./ModalController.js";import"./ScrollbarController-BFC67Y2x.js";import"./NotificationMixin-DOUQsx7N.js";import"./positioning-D-K8Mueq.js";import"./LightSlotController-Coyy4nqS.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- const e={modalHeading:"Choose a date",closeLabel:"Close window",buttonLabel:"Choose date",selectedDateMessage:"Selected date is"};export{e as default};
1
+ const e={modalHeading:"Choose a date",closeLabel:"Close window",buttonLabel:"Choose date",selectedDateMessage:"Selected date is",dateOutOfMinBound:e=>`Date must be on or after ${e}`,dateOutOfMaxBound:e=>`Date must be on or before ${e}`};export{e as default};
2
2
  //# sourceMappingURL=localization3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"localization3.js","sources":["../src/date-picker/localization.ts"],"sourcesContent":["const datePickerLocalization = {\n modalHeading: 'Choose a date',\n closeLabel: 'Close window',\n buttonLabel: 'Choose date',\n selectedDateMessage: 'Selected date is',\n}\n\nexport default datePickerLocalization\n"],"names":["datePickerLocalization","modalHeading","closeLabel","buttonLabel","selectedDateMessage"],"mappings":"AAAA,MAAMA,EAAyB,CAC7BC,aAAc,gBACdC,WAAY,eACZC,YAAa,cACbC,oBAAqB"}
1
+ {"version":3,"file":"localization3.js","sources":["../src/date-picker/localization.ts"],"sourcesContent":["const datePickerLocalization = {\n modalHeading: 'Choose a date',\n closeLabel: 'Close window',\n buttonLabel: 'Choose date',\n selectedDateMessage: 'Selected date is',\n dateOutOfMinBound: (minDate: string) => `Date must be on or after ${minDate}`,\n dateOutOfMaxBound: (maxDate: string) => `Date must be on or before ${maxDate}`,\n}\n\nexport default datePickerLocalization\n"],"names":["datePickerLocalization","modalHeading","closeLabel","buttonLabel","selectedDateMessage","dateOutOfMinBound","minDate","dateOutOfMaxBound","maxDate"],"mappings":"AAAA,MAAMA,EAAyB,CAC7BC,aAAc,gBACdC,WAAY,eACZC,YAAa,cACbC,oBAAqB,mBACrBC,kBAAoBC,GAAoB,4BAA4BA,IACpEC,kBAAoBC,GAAoB,6BAA6BA"}
package/lib/react.d.ts CHANGED
@@ -163,6 +163,26 @@ declare module "react" {
163
163
  React.HTMLAttributes<HTMLElement> &
164
164
  React.Attributes & {};
165
165
 
166
+ "nord-dropdown-submenu": WCProps<Components.DropdownSubmenu> &
167
+ React.RefAttributes<Components.DropdownSubmenu> &
168
+ React.HTMLAttributes<HTMLElement> &
169
+ React.Attributes & {
170
+ /**
171
+ * Forwarded from the internal nord-popout.
172
+ */
173
+ onclose?: (event: Event) => void;
174
+
175
+ /**
176
+ * Fired when mobile stack navigation activates this submenu.
177
+ */
178
+ "onnord-submenu-navigate"?: (event: Event) => void;
179
+
180
+ /**
181
+ * Forwarded from the internal nord-popout.
182
+ */
183
+ onopen?: (event: Event) => void;
184
+ };
185
+
166
186
  "nord-empty-state": WCProps<Components.EmptyState> &
167
187
  React.RefAttributes<Components.EmptyState> &
168
188
  React.HTMLAttributes<HTMLElement> &
@@ -26,6 +26,8 @@ declare const DatePicker_base: (new (...args: any[]) => import("../common/mixins
26
26
  * @localization closeLabel - Accessible label for the close button.
27
27
  * @localization buttonLabel - Accessible label for the toggle button that opens the date picker modal.
28
28
  * @localization selectedDateMessage - Describes the selected date. This message is appended to the toggle button label when a date is selected.
29
+ * @localization dateOutOfMinBound - Error message shown when the entered date is below the minimum allowed date.
30
+ * @localization dateOutOfMaxBound - Error message shown when the entered date is above the maximum allowed date.
29
31
  *
30
32
  * @cssprop [--n-label-color=var(--n-color-text)] - Controls the text color of the label, using our [color tokens](/tokens/#color).
31
33
  */
@@ -50,6 +52,11 @@ export default class DatePicker extends DatePicker_base {
50
52
  * Date value. Must be in IS0-8601 format: YYYY-MM-DD.
51
53
  */
52
54
  value: string;
55
+ /**
56
+ * Internal validation error message. Set automatically when min/max validation fails.
57
+ * This is a read-only property that's managed by the component.
58
+ */
59
+ internalError?: string;
53
60
  get valueAsDate(): Date | undefined;
54
61
  /**
55
62
  * Get/set the value of the picker as a Date object.
@@ -124,6 +131,7 @@ export default class DatePicker extends DatePicker_base {
124
131
  private handleFocus;
125
132
  private handleInputChange;
126
133
  private setValue;
134
+ private validateDateBounds;
127
135
  /**
128
136
  * Hide the date picker programmatically.
129
137
  * @param moveFocusToButton A boolean option to move the focus to the original button that opens the popout.
@@ -3,5 +3,7 @@ declare const datePickerLocalization: {
3
3
  closeLabel: string;
4
4
  buttonLabel: string;
5
5
  selectedDateMessage: string;
6
+ dateOutOfMinBound: (minDate: string) => string;
7
+ dateOutOfMaxBound: (maxDate: string) => string;
6
8
  };
7
9
  export default datePickerLocalization;
@@ -1,5 +1,8 @@
1
+ import type DropdownSubmenu from '../dropdown-submenu/DropdownSubmenu.js';
1
2
  import { LitElement } from 'lit';
2
3
  import '../popout/Popout.js';
4
+ import '../icon/Icon.js';
5
+ import '../dropdown-item/DropdownItem.js';
3
6
  declare const Dropdown_base: (new (...args: any[]) => import("../common/mixins/FloatingComponentMixin.js").FloatingMixinInterface) & typeof LitElement;
4
7
  /**
5
8
  * Dropdown menu displays a list of actions or selectable options for
@@ -37,6 +40,17 @@ export default class Dropdown extends Dropdown_base {
37
40
  private headerEndSlot;
38
41
  private list;
39
42
  private popout;
43
+ private submenuStack;
44
+ private isNavigating;
45
+ private get isShowingSubmenu();
46
+ /**
47
+ * @internal
48
+ */
49
+ get submenuStackRef(): readonly DropdownSubmenu[];
50
+ /**
51
+ * @internal
52
+ */
53
+ get deepestSubmenu(): DropdownSubmenu | undefined;
40
54
  /**
41
55
  * Controls whether the toggle slot expands to fill the width of its container.
42
56
  */
@@ -50,12 +64,29 @@ export default class Dropdown extends Dropdown_base {
50
64
  * Set to true to always display the dropdown as a floating overlay, even on smaller viewports.
51
65
  */
52
66
  alwaysFloating: boolean;
67
+ protected handleAlwaysFloatingChange(): void;
53
68
  connectedCallback(): void;
54
69
  render(): import("lit").TemplateResult<1>;
55
70
  private handleBlur;
56
71
  private handleOpen;
72
+ private handleBackClick;
57
73
  private handleClose;
58
74
  protected handleOpenChange(): void;
75
+ /**
76
+ * Navigate back one level in the submenu stack.
77
+ * @internal
78
+ */
79
+ navigateBack(): void;
80
+ /**
81
+ * Clear the entire submenu stack.
82
+ * @internal
83
+ */
84
+ private clearSubmenuStack;
85
+ /**
86
+ * Handle submenu navigation event.
87
+ * @internal
88
+ */
89
+ private handleSubmenuNavigate;
59
90
  /**
60
91
  * Hide the dropdown programmatically.
61
92
  * This method delegates to the Dropdown's internal Popout component.
@@ -0,0 +1,76 @@
1
+ import { LitElement } from 'lit';
2
+ import '../popout/Popout.js';
3
+ /**
4
+ * Dropdown submenu nests a secondary menu within a parent dropdown.
5
+ * The trigger slot contains the item that opens the submenu, and the default slot contains the submenu items.
6
+ *
7
+ * Supports both hover (non-touch) and click (touch-devices/accessibility) interactions.
8
+ *
9
+ * On small screens, uses mobile stack navigation: tapping a submenu trigger replaces the
10
+ * dropdown's visible content with the submenu's items and shows a back button.
11
+ *
12
+ * @status ready
13
+ * @category action
14
+ *
15
+ * @slot trigger - The element that opens the submenu (typically nord-dropdown-item).
16
+ * @slot - The submenu content items.
17
+ *
18
+ * @fires {NordEvent} open - Forwarded from the internal nord-popout.
19
+ * @fires {NordEvent} close - Forwarded from the internal nord-popout.
20
+ * @fires {CustomEvent} nord-submenu-navigate - Fired when mobile stack navigation activates this submenu.
21
+ */
22
+ export default class DropdownSubmenu extends LitElement {
23
+ static styles: import("lit").CSSResult[];
24
+ private popout?;
25
+ /** @internal */
26
+ private mobileActive;
27
+ private readonly popoutId;
28
+ private events;
29
+ private currentTriggerElement;
30
+ private popoutOpen;
31
+ private readonly mobileMediaQuery;
32
+ private isSmallScreen;
33
+ private parentDropdownAlwaysFloating;
34
+ private parentObserver?;
35
+ private get shouldUseMobileStack();
36
+ private get parentDropdown();
37
+ private get isInSubmenuStack();
38
+ private get isDeepestInStack();
39
+ connectedCallback(): void;
40
+ disconnectedCallback(): void;
41
+ render(): import("lit").TemplateResult<1>;
42
+ private handleTriggerSlotChange;
43
+ private handleTriggerMouseEnter;
44
+ private handleTriggerClick;
45
+ private handleTriggerKeydown;
46
+ private handleContentKeydown;
47
+ private handlePopoutOpen;
48
+ private handlePopoutClose;
49
+ private handleParentDropdownMouseOver;
50
+ private closeOtherSubmenus;
51
+ /**
52
+ * Deactivate mobile stack navigation (remove from stack).
53
+ * @internal
54
+ */
55
+ deactivateMobile(): void;
56
+ /**
57
+ * Read trigger text for back button title in Dropdown.
58
+ * @internal
59
+ */
60
+ get label(): string;
61
+ /**
62
+ * Close the submenu programmatically.
63
+ * Returns a promise that resolves when the close animation completes.
64
+ */
65
+ close(): Promise<TransitionEvent | void>;
66
+ /**
67
+ * Navigate into this submenu using mobile stack navigation.
68
+ * @internal
69
+ */
70
+ private navigateIntoSubmenu;
71
+ }
72
+ declare global {
73
+ interface HTMLElementTagNameMap {
74
+ 'nord-dropdown-submenu': DropdownSubmenu;
75
+ }
76
+ }
@@ -13,6 +13,7 @@ export { default as Divider } from './divider/Divider.js';
13
13
  export { default as Drawer } from './drawer/Drawer.js';
14
14
  export { default as DropdownGroup } from './dropdown-group/DropdownGroup.js';
15
15
  export { default as DropdownItem } from './dropdown-item/DropdownItem.js';
16
+ export { default as DropdownSubmenu } from './dropdown-submenu/DropdownSubmenu.js';
16
17
  export { default as Dropdown } from './dropdown/Dropdown.js';
17
18
  export { default as EmptyState } from './empty-state/EmptyState.js';
18
19
  export { default as Fieldset } from './fieldset/Fieldset.js';
@@ -1,5 +1,7 @@
1
1
  import type { ReactiveController, ReactiveControllerHost } from 'lit';
2
2
  import type { Translation, WellKnownKeys } from './translation.js';
3
+ import { fallback } from './translation.js';
4
+ type FallbackType = typeof fallback;
3
5
  type Func = (...args: any[]) => any;
4
6
  type Result<Type, Key extends keyof Type> = Type[Key] extends Func ? ReturnType<Type[Key]> : Type[Key];
5
7
  type FuncParams<Type, K extends keyof Type> = Type[K] extends Func ? Parameters<Type[K]> : [];
@@ -25,7 +27,7 @@ export declare class LocalizeController<TComponentName extends Exclude<keyof Tra
25
27
  get resolvedLang(): string;
26
28
  hostConnected(): void;
27
29
  hostDisconnected(): void;
28
- term<Key extends keyof Translation[TComponentName]>(key: Key, ...args: FuncParams<Translation[TComponentName], Key>): Result<Translation[TComponentName], Key>;
30
+ term<Key extends keyof FallbackType[TComponentName]>(key: Key, ...args: FuncParams<FallbackType[TComponentName], Key>): Result<FallbackType[TComponentName], Key>;
29
31
  private handleLangChange;
30
32
  }
31
33
  export {};
@@ -24,6 +24,8 @@ declare const en: {
24
24
  closeLabel: string;
25
25
  buttonLabel: string;
26
26
  selectedDateMessage: string;
27
+ dateOutOfMinBound: (minDate: string) => string;
28
+ dateOutOfMaxBound: (maxDate: string) => string;
27
29
  };
28
30
  'nord-modal': {
29
31
  closeLabel: string;
@@ -1,15 +1,25 @@
1
1
  import en from './en-us.js';
2
2
  type PickStartsWith<T, Prefix extends string> = T extends `${Prefix}${string}` ? T : never;
3
+ type DeepPartial<T> = T extends object ? {
4
+ [P in keyof T]?: DeepPartial<T[P]>;
5
+ } : T;
3
6
  export type Translation = typeof en;
7
+ export type PartialTranslation = {
8
+ $lang: string;
9
+ $name?: string;
10
+ $dir?: 'ltr' | 'rtl';
11
+ } & DeepPartial<Omit<Translation, '$lang' | '$name' | '$dir'>>;
4
12
  export type WellKnownKeys = PickStartsWith<keyof Translation, '$'>;
5
13
  /**
6
14
  * Removes all registered translations
7
15
  */
8
16
  export declare function clearTranslations(): void;
9
17
  /**
10
- * Registers one or more translations
18
+ * Registers one or more translations. If a translation for the same language
19
+ * already exists, the new translation will be deep-merged with the existing one.
20
+ * Translations can be partial — only the fields you provide will override existing values.
11
21
  */
12
- export declare function registerTranslation(...translation: Translation[]): void;
22
+ export declare function registerTranslation(...translation: (Translation | PartialTranslation)[]): void;
13
23
  /**
14
24
  * subscribe to document language changes
15
25
  * @param onChange callback for when document `lang` attr changes
@@ -57,6 +67,8 @@ export declare function resolveTranslation(langCode: string): {
57
67
  closeLabel: string;
58
68
  buttonLabel: string;
59
69
  selectedDateMessage: string;
70
+ dateOutOfMinBound: (minDate: string) => string;
71
+ dateOutOfMaxBound: (maxDate: string) => string;
60
72
  };
61
73
  'nord-modal': {
62
74
  closeLabel: string;
@@ -1,2 +1,2 @@
1
- import{isServer as t}from"lit";import o from"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";const n=new Set,i=new Set,e=new Map;if(!t){new MutationObserver((function(){for(const t of n)t()})).observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]})}function a(){e.clear()}function r(...t){t.forEach((t=>{const o=t.$lang.toLowerCase();e.set(o,t)})),function(){for(const t of i)t()}()}function l(t){return n.add(t),()=>n.delete(t)}function c(t){return i.add(t),()=>i.delete(t)}function s(t){return e.has(t)}function u(t){const n=t.toLowerCase(),[i]=n.split("-");return e.get(n)||e.get(i)||o}export{a as clearTranslations,o as fallback,s as isTranslationRegistered,r as registerTranslation,u as resolveTranslation,l as subscribeToDocumentLang,c as subscribeToTranslationRegistration};
1
+ import{isServer as t}from"lit";import o from"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";const n=new Set,i=new Set,r=new Map;function e(t,o){if(!a(o))return o;if(!a(t))return o;const n={...t};for(const t in o){const i=o[t],r=n[t];a(i)&&a(r)?n[t]=e(r,i):n[t]=i}return n}function a(t){return null!==t&&"object"==typeof t&&!Array.isArray(t)}if(!t){new MutationObserver((function(){for(const t of n)t()})).observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]})}function c(){r.clear()}function l(...t){t.forEach((t=>{const o=t.$lang.toLowerCase(),n=r.get(o),i=n?e(n,t):t;r.set(o,i)})),function(){for(const t of i)t()}()}function s(t){return n.add(t),()=>n.delete(t)}function u(t){return i.add(t),()=>i.delete(t)}function f(t){return r.has(t)}function m(t){const n=t.toLowerCase(),[i]=n.split("-");return r.get(n)||r.get(i)||o}export{c as clearTranslations,o as fallback,f as isTranslationRegistered,l as registerTranslation,m as resolveTranslation,s as subscribeToDocumentLang,u as subscribeToTranslationRegistration};
2
2
  //# sourceMappingURL=translation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"translation.js","sources":["../src/localization/translation.ts"],"sourcesContent":["import { isServer } from 'lit'\nimport en from './en-us.js'\n\n// gets list of properties beginning prefix\ntype PickStartsWith<T, Prefix extends string> = T extends `${Prefix}${string}` ? T : never\n\nexport type Translation = typeof en\nexport type WellKnownKeys = PickStartsWith<keyof Translation, '$'>\n\nconst documentLangSubscribers = new Set<() => void>()\nconst translationRegistrationSubscribers = new Set<() => void>()\nconst translations = new Map<string, Translation>()\n\nfunction notifyDocumentLangChange() {\n for (const subscriber of documentLangSubscribers) {\n subscriber()\n }\n}\n\nfunction notifyTranslationRegistration() {\n for (const subscriber of translationRegistrationSubscribers) {\n subscriber()\n }\n}\n\n// observe changes to the document's lang\nif (!isServer) {\n const observer = new MutationObserver(notifyDocumentLangChange)\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n}\n\n/**\n * Removes all registered translations\n */\nexport function clearTranslations() {\n translations.clear()\n}\n\n/**\n * Registers one or more translations\n */\nexport function registerTranslation(...translation: Translation[]) {\n translation.forEach((t) => {\n const lang = t.$lang.toLowerCase()\n translations.set(lang, t)\n })\n\n notifyTranslationRegistration()\n}\n\n/**\n * subscribe to document language changes\n * @param onChange callback for when document `lang` attr changes\n * @returns cleanup function\n */\nexport function subscribeToDocumentLang(onChange: () => void): () => void {\n documentLangSubscribers.add(onChange)\n return () => documentLangSubscribers.delete(onChange)\n}\n\n/**\n * subscribe to translation registration changes\n * @param onChange callback for when new translations are registered\n * @returns cleanup function\n */\nexport function subscribeToTranslationRegistration(onChange: () => void): () => void {\n translationRegistrationSubscribers.add(onChange)\n return () => translationRegistrationSubscribers.delete(onChange)\n}\n\n/**\n * Check whether there is a translation registered for the given lang\n * @param lang the lang code e.g. \"en\" or \"en-GB\"\n */\nexport function isTranslationRegistered(lang: string) {\n return translations.has(lang)\n}\n\n/**\n * Picks the most appropriate translation for the given language, from most specific to least specific.\n * First tries lang + region, then lang only, then fallback.\n */\nexport function resolveTranslation(langCode: string) {\n const lang = langCode.toLowerCase()\n const [langOnly] = lang.split('-')\n\n return translations.get(lang) || translations.get(langOnly) || en\n}\n\nexport { en as fallback }\n"],"names":["documentLangSubscribers","Set","translationRegistrationSubscribers","translations","Map","isServer","MutationObserver","subscriber","observe","document","documentElement","attributes","attributeFilter","clearTranslations","clear","registerTranslation","translation","forEach","t","lang","$lang","toLowerCase","set","notifyTranslationRegistration","subscribeToDocumentLang","onChange","add","delete","subscribeToTranslationRegistration","isTranslationRegistered","has","resolveTranslation","langCode","langOnly","split","get","en"],"mappings":"2SASA,MAAMA,EAA0B,IAAIC,IAC9BC,EAAqC,IAAID,IACzCE,EAAe,IAAIC,IAezB,IAAKC,EAAU,CACI,IAAIC,kBAdvB,WACE,IAAK,MAAMC,KAAcP,EACvBO,GAEJ,IAYWC,QAAQC,SAASC,gBAAiB,CACzCC,YAAY,EACZC,gBAAiB,CAAC,SAEtB,UAKgBC,IACdV,EAAaW,OACf,CAKgB,SAAAC,KAAuBC,GACrCA,EAAYC,SAASC,IACnB,MAAMC,EAAOD,EAAEE,MAAMC,cACrBlB,EAAamB,IAAIH,EAAMD,EAAE,IA7B7B,WACE,IAAK,MAAMX,KAAcL,EACvBK,GAEJ,CA4BEgB,EACF,CAOM,SAAUC,EAAwBC,GAEtC,OADAzB,EAAwB0B,IAAID,GACrB,IAAMzB,EAAwB2B,OAAOF,EAC9C,CAOM,SAAUG,EAAmCH,GAEjD,OADAvB,EAAmCwB,IAAID,GAChC,IAAMvB,EAAmCyB,OAAOF,EACzD,CAMM,SAAUI,EAAwBV,GACtC,OAAOhB,EAAa2B,IAAIX,EAC1B,CAMM,SAAUY,EAAmBC,GACjC,MAAMb,EAAOa,EAASX,eACfY,GAAYd,EAAKe,MAAM,KAE9B,OAAO/B,EAAagC,IAAIhB,IAAShB,EAAagC,IAAIF,IAAaG,CACjE"}
1
+ {"version":3,"file":"translation.js","sources":["../src/localization/translation.ts"],"sourcesContent":["import { isServer } from 'lit'\nimport en from './en-us.js'\n\n// gets list of properties beginning prefix\ntype PickStartsWith<T, Prefix extends string> = T extends `${Prefix}${string}` ? T : never\n\n// Recursively make all properties optional\ntype DeepPartial<T> = T extends object\n ? {\n [P in keyof T]?: DeepPartial<T[P]>\n }\n : T\n\nexport type Translation = typeof en\nexport type PartialTranslation = {\n $lang: string\n $name?: string\n $dir?: 'ltr' | 'rtl'\n} & DeepPartial<Omit<Translation, '$lang' | '$name' | '$dir'>>\nexport type WellKnownKeys = PickStartsWith<keyof Translation, '$'>\n\nconst documentLangSubscribers = new Set<() => void>()\nconst translationRegistrationSubscribers = new Set<() => void>()\nconst translations = new Map<string, Translation>()\n\nfunction notifyDocumentLangChange() {\n for (const subscriber of documentLangSubscribers) {\n subscriber()\n }\n}\n\nfunction notifyTranslationRegistration() {\n for (const subscriber of translationRegistrationSubscribers) {\n subscriber()\n }\n}\n\nfunction deepMerge(target: unknown, source: unknown): unknown {\n if (!isObject(source))\n return source\n\n if (!isObject(target))\n return source\n\n const result = { ...target }\n\n for (const key in source) {\n const sourceValue = (source as Record<string, unknown>)[key]\n const targetValue = result[key]\n\n if (isObject(sourceValue) && isObject(targetValue)) {\n result[key] = deepMerge(targetValue, sourceValue)\n }\n else {\n result[key] = sourceValue\n }\n }\n\n return result\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\n// observe changes to the document's lang\nif (!isServer) {\n const observer = new MutationObserver(notifyDocumentLangChange)\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n}\n\n/**\n * Removes all registered translations\n */\nexport function clearTranslations() {\n translations.clear()\n}\n\n/**\n * Registers one or more translations. If a translation for the same language\n * already exists, the new translation will be deep-merged with the existing one.\n * Translations can be partial — only the fields you provide will override existing values.\n */\nexport function registerTranslation(...translation: (Translation | PartialTranslation)[]) {\n translation.forEach((t) => {\n const lang = t.$lang.toLowerCase()\n const existing = translations.get(lang)\n\n // Deep merge: keep existing keys, override with new ones\n const merged = existing ? (deepMerge(existing, t) as Translation) : (t as Translation)\n translations.set(lang, merged)\n })\n\n notifyTranslationRegistration()\n}\n\n/**\n * subscribe to document language changes\n * @param onChange callback for when document `lang` attr changes\n * @returns cleanup function\n */\nexport function subscribeToDocumentLang(onChange: () => void): () => void {\n documentLangSubscribers.add(onChange)\n return () => documentLangSubscribers.delete(onChange)\n}\n\n/**\n * subscribe to translation registration changes\n * @param onChange callback for when new translations are registered\n * @returns cleanup function\n */\nexport function subscribeToTranslationRegistration(onChange: () => void): () => void {\n translationRegistrationSubscribers.add(onChange)\n return () => translationRegistrationSubscribers.delete(onChange)\n}\n\n/**\n * Check whether there is a translation registered for the given lang\n * @param lang the lang code e.g. \"en\" or \"en-GB\"\n */\nexport function isTranslationRegistered(lang: string) {\n return translations.has(lang)\n}\n\n/**\n * Picks the most appropriate translation for the given language, from most specific to least specific.\n * First tries lang + region, then lang only, then fallback.\n */\nexport function resolveTranslation(langCode: string) {\n const lang = langCode.toLowerCase()\n const [langOnly] = lang.split('-')\n\n return translations.get(lang) || translations.get(langOnly) || en\n}\n\nexport { en as fallback }\n"],"names":["documentLangSubscribers","Set","translationRegistrationSubscribers","translations","Map","deepMerge","target","source","isObject","result","key","sourceValue","targetValue","value","Array","isArray","isServer","MutationObserver","subscriber","observe","document","documentElement","attributes","attributeFilter","clearTranslations","clear","registerTranslation","translation","forEach","t","lang","$lang","toLowerCase","existing","get","merged","set","notifyTranslationRegistration","subscribeToDocumentLang","onChange","add","delete","subscribeToTranslationRegistration","isTranslationRegistered","has","resolveTranslation","langCode","langOnly","split","en"],"mappings":"2SAqBA,MAAMA,EAA0B,IAAIC,IAC9BC,EAAqC,IAAID,IACzCE,EAAe,IAAIC,IAczB,SAASC,EAAUC,EAAiBC,GAClC,IAAKC,EAASD,GACZ,OAAOA,EAET,IAAKC,EAASF,GACZ,OAAOC,EAET,MAAME,EAAS,IAAKH,GAEpB,IAAK,MAAMI,KAAOH,EAAQ,CACxB,MAAMI,EAAeJ,EAAmCG,GAClDE,EAAcH,EAAOC,GAEvBF,EAASG,IAAgBH,EAASI,GACpCH,EAAOC,GAAOL,EAAUO,EAAaD,GAGrCF,EAAOC,GAAOC,CAEjB,CAED,OAAOF,CACT,CAEA,SAASD,EAASK,GAChB,OAAiB,OAAVA,GAAmC,iBAAVA,IAAuBC,MAAMC,QAAQF,EACvE,CAGA,IAAKG,EAAU,CACI,IAAIC,kBA1CvB,WACE,IAAK,MAAMC,KAAclB,EACvBkB,GAEJ,IAwCWC,QAAQC,SAASC,gBAAiB,CACzCC,YAAY,EACZC,gBAAiB,CAAC,SAEtB,UAKgBC,IACdrB,EAAasB,OACf,CAOgB,SAAAC,KAAuBC,GACrCA,EAAYC,SAASC,IACnB,MAAMC,EAAOD,EAAEE,MAAMC,cACfC,EAAW9B,EAAa+B,IAAIJ,GAG5BK,EAASF,EAAY5B,EAAU4B,EAAUJ,GAAsBA,EACrE1B,EAAaiC,IAAIN,EAAMK,EAAO,IA/DlC,WACE,IAAK,MAAMjB,KAAchB,EACvBgB,GAEJ,CA8DEmB,EACF,CAOM,SAAUC,EAAwBC,GAEtC,OADAvC,EAAwBwC,IAAID,GACrB,IAAMvC,EAAwByC,OAAOF,EAC9C,CAOM,SAAUG,EAAmCH,GAEjD,OADArC,EAAmCsC,IAAID,GAChC,IAAMrC,EAAmCuC,OAAOF,EACzD,CAMM,SAAUI,EAAwBb,GACtC,OAAO3B,EAAayC,IAAId,EAC1B,CAMM,SAAUe,EAAmBC,GACjC,MAAMhB,EAAOgB,EAASd,eACfe,GAAYjB,EAAKkB,MAAM,KAE9B,OAAO7C,EAAa+B,IAAIJ,IAAS3B,EAAa+B,IAAIa,IAAaE,CACjE"}
package/lib/vue.d.ts CHANGED
@@ -135,6 +135,25 @@ interface NordComponents {
135
135
 
136
136
  "nord-dropdown-item": DefineComponent<WCProps<Components.DropdownItem> & {}>;
137
137
 
138
+ "nord-dropdown-submenu": DefineComponent<
139
+ WCProps<Components.DropdownSubmenu> & {
140
+ /**
141
+ * Forwarded from the internal nord-popout.
142
+ */
143
+ onClose?: (event: Event) => void;
144
+
145
+ /**
146
+ * Fired when mobile stack navigation activates this submenu.
147
+ */
148
+ onNordSubmenuNavigate?: (event: Event) => void;
149
+
150
+ /**
151
+ * Forwarded from the internal nord-popout.
152
+ */
153
+ onOpen?: (event: Event) => void;
154
+ }
155
+ >;
156
+
138
157
  "nord-empty-state": DefineComponent<WCProps<Components.EmptyState> & {}>;
139
158
 
140
159
  "nord-fieldset": DefineComponent<WCProps<Components.Fieldset> & {}>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nordhealth/components",
3
3
  "type": "module",
4
- "version": "4.15.0",
4
+ "version": "4.16.1",
5
5
  "description": "This package includes Nord Design System Web Components",
6
6
  "author": "Nordhealth <support@nordhealth.design>",
7
7
  "license": "SEE LICENSE IN LICENSE.md",
@@ -46,8 +46,8 @@
46
46
  "@custom-elements-manifest/analyzer": "^0.10.10",
47
47
  "@nordhealth/css": "^4.4.1",
48
48
  "@nordhealth/fonts": "^3.0.4",
49
- "@nordhealth/themes": "^9.0.2",
50
- "@nordhealth/tokens": "^8.0.2",
49
+ "@nordhealth/themes": "^9.0.3",
50
+ "@nordhealth/tokens": "^8.0.3",
51
51
  "@open-wc/eslint-config": "^12.0.3",
52
52
  "@open-wc/testing-helpers": "^3.0.1",
53
53
  "@playwright/test": "1.58.0",
@@ -90,5 +90,5 @@
90
90
  "rollup": "~4.21.3"
91
91
  }
92
92
  },
93
- "gitHead": "3e61bba8657571bd2c410b4cc1ed7a9b382751d5"
93
+ "gitHead": "12bbf2c6c1ea554be36738f9afcc1d27095bfb01"
94
94
  }
@@ -1,2 +0,0 @@
1
- import{css as o}from"lit";const n=o`:host{--_n-dropdown-item-background-color:var(--n-dropdown-item-background-color, transparent);--_n-dropdown-item-color:var(--n-dropdown-item-color, var(--n-color-text));display:flex;line-height:var(--n-line-height-tight)}.n-dropdown-item{appearance:none;cursor:pointer;display:flex;flex:1;gap:var(--n-space-s);align-items:center;font-family:inherit;font-size:inherit;font-weight:var(--n-font-weight);text-decoration:none;border:0;color:var(--_n-dropdown-item-color);padding:var(--n-space-s);border-radius:var(--n-border-radius-s);background:var(--_n-dropdown-item-background-color);text-align:start;box-shadow:var(--n-dropdown-item-box-shadow,none);min-inline-size:0}.n-dropdown-item:hover{--_n-dropdown-item-background-color:var(--n-dropdown-item-background-color, var(--n-color-accent));--_n-dropdown-item-color:var(--n-dropdown-item-color, var(--n-color-text-on-accent))}.n-dropdown-item:hover ::slotted(*){color:var(--n-dropdown-item-color,var(--n-color-text-on-accent))!important}.n-dropdown-item ::slotted(nord-icon){color:var(--n-color-icon)}.n-dropdown-item:hover ::slotted(nord-icon){color:currentColor}.n-dropdown-item:active{opacity:.7}.n-dropdown-item:focus{--n-dropdown-item-box-shadow:0 0 0 2px var(--n-color-accent);outline:0;position:relative;z-index:var(--n-index-masked)}@supports selector(:focus-visible){.n-dropdown-item:focus{--n-dropdown-item-box-shadow:none}.n-dropdown-item:focus-visible{--n-dropdown-item-box-shadow:0 0 0 2px var(--n-color-accent)}}@media (max-width:35.9375em){.n-dropdown-item{gap:var(--n-space-m);padding:calc(var(--n-space-m)/ 1.5) var(--n-space-m)}.n-dropdown-item ::slotted(nord-icon){block-size:var(--n-size-icon-m);inline-size:var(--n-size-icon-m)}}slot[name=end],slot[name=start]{flex:0 0 auto}slot[name=end]{display:flex;margin-inline-start:auto}.n-content{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host([disabled]){--_n-dropdown-item-background-color:var(--n-dropdown-item-background-color, transparent);--_n-dropdown-item-color:var(--n-dropdown-item-color, var(--n-color-text-weakest));pointer-events:none}:host([disabled]) .n-button::after{display:none}::slotted(nord-icon:not([size])){--_n-icon-size:var(--n-size-icon-s)}`;export{n as s};
2
- //# sourceMappingURL=DropdownItem-Cy6lHtoG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropdownItem-Cy6lHtoG.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}