@navikt/ds-react 5.6.0-beta.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/_docs.json +1495 -652
  2. package/cjs/accordion/Accordion.js +1 -0
  3. package/cjs/accordion/AccordionContext.js +1 -1
  4. package/cjs/accordion/AccordionHeader.js +2 -2
  5. package/cjs/accordion/AccordionItem.js +3 -0
  6. package/cjs/date/datepicker/DatePicker.js +30 -34
  7. package/cjs/date/datepicker/DatePickerStandalone.js +23 -26
  8. package/cjs/date/datepicker/parts/Caption.js +28 -0
  9. package/cjs/date/datepicker/{DayButton.js → parts/DayButton.js} +1 -2
  10. package/cjs/date/datepicker/{caption → parts}/DropdownCaption.js +13 -7
  11. package/cjs/date/datepicker/parts/HeadRow.js +36 -0
  12. package/cjs/date/datepicker/parts/Row.js +23 -0
  13. package/cjs/date/datepicker/{TableHead.js → parts/TableHead.js} +4 -3
  14. package/cjs/date/datepicker/parts/WeekNumber.js +35 -0
  15. package/cjs/date/datepicker/parts/WeekRow.js +34 -0
  16. package/cjs/date/utils/get-month-weeks.js +46 -0
  17. package/cjs/date/utils/labels.js +40 -1
  18. package/cjs/index.js +1 -0
  19. package/cjs/layout/bleed/Bleed.js +25 -5
  20. package/cjs/layout/bleed/index.js +1 -4
  21. package/cjs/layout/box/Box.js +1 -1
  22. package/cjs/layout/responsive/Responsive.js +8 -6
  23. package/cjs/layout/utilities/css.js +37 -14
  24. package/esm/accordion/Accordion.js +1 -0
  25. package/esm/accordion/Accordion.js.map +1 -1
  26. package/esm/accordion/AccordionContext.d.ts +1 -0
  27. package/esm/accordion/AccordionContext.js +1 -1
  28. package/esm/accordion/AccordionContext.js.map +1 -1
  29. package/esm/accordion/AccordionHeader.js +2 -2
  30. package/esm/accordion/AccordionHeader.js.map +1 -1
  31. package/esm/accordion/AccordionItem.js +3 -0
  32. package/esm/accordion/AccordionItem.js.map +1 -1
  33. package/esm/date/datepicker/DatePicker.d.ts +14 -5
  34. package/esm/date/datepicker/DatePicker.js +29 -33
  35. package/esm/date/datepicker/DatePicker.js.map +1 -1
  36. package/esm/date/datepicker/DatePickerStandalone.d.ts +3 -2
  37. package/esm/date/datepicker/DatePickerStandalone.js +22 -25
  38. package/esm/date/datepicker/DatePickerStandalone.js.map +1 -1
  39. package/esm/date/datepicker/{caption → parts}/Caption.d.ts +3 -0
  40. package/esm/date/datepicker/parts/Caption.js +22 -0
  41. package/esm/date/datepicker/parts/Caption.js.map +1 -0
  42. package/esm/date/datepicker/parts/DayButton.d.ts +4 -0
  43. package/esm/date/datepicker/{DayButton.js → parts/DayButton.js} +2 -1
  44. package/esm/date/datepicker/parts/DayButton.js.map +1 -0
  45. package/esm/date/datepicker/{caption → parts}/DropdownCaption.d.ts +3 -0
  46. package/esm/date/datepicker/parts/DropdownCaption.js +44 -0
  47. package/esm/date/datepicker/parts/DropdownCaption.js.map +1 -0
  48. package/esm/date/datepicker/parts/HeadRow.d.ts +11 -0
  49. package/esm/date/datepicker/parts/HeadRow.js +29 -0
  50. package/esm/date/datepicker/parts/HeadRow.js.map +1 -0
  51. package/esm/date/datepicker/parts/Row.d.ts +17 -0
  52. package/esm/date/datepicker/parts/Row.js +19 -0
  53. package/esm/date/datepicker/parts/Row.js.map +1 -0
  54. package/esm/date/datepicker/parts/TableHead.d.ts +6 -0
  55. package/esm/date/datepicker/{TableHead.js → parts/TableHead.js} +5 -2
  56. package/esm/date/datepicker/parts/TableHead.js.map +1 -0
  57. package/esm/date/datepicker/parts/WeekNumber.d.ts +13 -0
  58. package/esm/date/datepicker/parts/WeekNumber.js +31 -0
  59. package/esm/date/datepicker/parts/WeekNumber.js.map +1 -0
  60. package/esm/date/datepicker/parts/WeekRow.d.ts +5 -0
  61. package/esm/date/datepicker/parts/WeekRow.js +30 -0
  62. package/esm/date/datepicker/parts/WeekRow.js.map +1 -0
  63. package/esm/date/utils/get-month-weeks.d.ts +16 -0
  64. package/esm/date/utils/get-month-weeks.js +42 -0
  65. package/esm/date/utils/get-month-weeks.js.map +1 -0
  66. package/esm/date/utils/labels.d.ts +9 -0
  67. package/esm/date/utils/labels.js +36 -0
  68. package/esm/date/utils/labels.js.map +1 -1
  69. package/esm/form/Fieldset/useFieldset.d.ts +1 -1
  70. package/esm/form/checkbox/useCheckbox.d.ts +1 -1
  71. package/esm/form/combobox/Combobox.d.ts +1 -1
  72. package/esm/form/radio/useRadio.d.ts +1 -1
  73. package/esm/index.d.ts +1 -0
  74. package/esm/index.js +1 -0
  75. package/esm/index.js.map +1 -1
  76. package/esm/layout/bleed/Bleed.d.ts +46 -7
  77. package/esm/layout/bleed/Bleed.js +25 -5
  78. package/esm/layout/bleed/Bleed.js.map +1 -1
  79. package/esm/layout/bleed/index.d.ts +1 -1
  80. package/esm/layout/bleed/index.js +1 -1
  81. package/esm/layout/bleed/index.js.map +1 -1
  82. package/esm/layout/box/Box.js +1 -1
  83. package/esm/layout/box/Box.js.map +1 -1
  84. package/esm/layout/responsive/Responsive.d.ts +8 -4
  85. package/esm/layout/responsive/Responsive.js +8 -6
  86. package/esm/layout/responsive/Responsive.js.map +1 -1
  87. package/esm/layout/utilities/css.d.ts +1 -1
  88. package/esm/layout/utilities/css.js +37 -14
  89. package/esm/layout/utilities/css.js.map +1 -1
  90. package/package.json +5 -4
  91. package/src/accordion/Accordion.tsx +1 -0
  92. package/src/accordion/AccordionContext.tsx +2 -1
  93. package/src/accordion/AccordionHeader.tsx +2 -2
  94. package/src/accordion/AccordionItem.tsx +4 -0
  95. package/src/date/datepicker/DatePicker.tsx +63 -58
  96. package/src/date/datepicker/DatePickerStandalone.tsx +36 -37
  97. package/src/date/datepicker/datepicker.stories.tsx +66 -1
  98. package/src/date/datepicker/{caption → parts}/Caption.tsx +19 -17
  99. package/src/date/datepicker/{DayButton.tsx → parts/DayButton.tsx} +3 -1
  100. package/src/date/datepicker/parts/DropdownCaption.tsx +113 -0
  101. package/src/date/datepicker/parts/HeadRow.tsx +56 -0
  102. package/src/date/datepicker/parts/Row.tsx +47 -0
  103. package/src/date/datepicker/{TableHead.tsx → parts/TableHead.tsx} +6 -2
  104. package/src/date/datepicker/parts/WeekNumber.tsx +79 -0
  105. package/src/date/datepicker/parts/WeekRow.tsx +60 -0
  106. package/src/date/utils/__tests__/get-month-weeks.test.ts +113 -0
  107. package/src/date/utils/get-month-weeks.ts +93 -0
  108. package/src/date/utils/labels.ts +51 -0
  109. package/src/index.ts +1 -0
  110. package/src/layout/bleed/Bleed.stories.tsx +381 -0
  111. package/src/layout/bleed/Bleed.tsx +130 -0
  112. package/src/layout/bleed/index.ts +1 -0
  113. package/src/layout/box/Box.tsx +1 -0
  114. package/src/layout/responsive/Responsive.tsx +21 -6
  115. package/src/layout/responsive/hide.stories.tsx +35 -0
  116. package/src/layout/responsive/show.stories.tsx +35 -0
  117. package/src/layout/utilities/css.ts +59 -19
  118. package/cjs/date/datepicker/caption/Caption.js +0 -23
  119. package/cjs/date/datepicker/caption/index.js +0 -10
  120. package/cjs/date/datepicker/caption/package.json +0 -6
  121. package/cjs/layout/content-box/ContentBox.js +0 -56
  122. package/cjs/layout/content-box/index.js +0 -8
  123. package/cjs/layout/content-box/package.json +0 -6
  124. package/cjs/layout/page-demo/AvatarPanel.js +0 -18
  125. package/cjs/layout/page-demo/Filter.js +0 -21
  126. package/cjs/layout/page-demo/Header.js +0 -48
  127. package/cjs/layout/page-demo/Intro.js +0 -36
  128. package/cjs/layout/page-demo/Sidebar.js +0 -49
  129. package/esm/date/datepicker/DayButton.d.ts +0 -3
  130. package/esm/date/datepicker/DayButton.js.map +0 -1
  131. package/esm/date/datepicker/TableHead.d.ts +0 -3
  132. package/esm/date/datepicker/TableHead.js.map +0 -1
  133. package/esm/date/datepicker/caption/Caption.js +0 -17
  134. package/esm/date/datepicker/caption/Caption.js.map +0 -1
  135. package/esm/date/datepicker/caption/DropdownCaption.js +0 -38
  136. package/esm/date/datepicker/caption/DropdownCaption.js.map +0 -1
  137. package/esm/date/datepicker/caption/index.d.ts +0 -2
  138. package/esm/date/datepicker/caption/index.js +0 -3
  139. package/esm/date/datepicker/caption/index.js.map +0 -1
  140. package/esm/layout/content-box/ContentBox.d.ts +0 -8
  141. package/esm/layout/content-box/ContentBox.js +0 -28
  142. package/esm/layout/content-box/ContentBox.js.map +0 -1
  143. package/esm/layout/content-box/index.d.ts +0 -1
  144. package/esm/layout/content-box/index.js +0 -2
  145. package/esm/layout/content-box/index.js.map +0 -1
  146. package/esm/layout/page-demo/AvatarPanel.d.ts +0 -4
  147. package/esm/layout/page-demo/AvatarPanel.js +0 -12
  148. package/esm/layout/page-demo/AvatarPanel.js.map +0 -1
  149. package/esm/layout/page-demo/Filter.d.ts +0 -2
  150. package/esm/layout/page-demo/Filter.js +0 -15
  151. package/esm/layout/page-demo/Filter.js.map +0 -1
  152. package/esm/layout/page-demo/Header.d.ts +0 -2
  153. package/esm/layout/page-demo/Header.js +0 -42
  154. package/esm/layout/page-demo/Header.js.map +0 -1
  155. package/esm/layout/page-demo/Intro.d.ts +0 -2
  156. package/esm/layout/page-demo/Intro.js +0 -30
  157. package/esm/layout/page-demo/Intro.js.map +0 -1
  158. package/esm/layout/page-demo/Sidebar.d.ts +0 -4
  159. package/esm/layout/page-demo/Sidebar.js +0 -41
  160. package/esm/layout/page-demo/Sidebar.js.map +0 -1
  161. package/src/date/datepicker/caption/DropdownCaption.tsx +0 -108
  162. package/src/date/datepicker/caption/index.ts +0 -2
@@ -70,6 +70,7 @@ exports.Accordion = (0, react_1.forwardRef)((_a, ref) => {
70
70
  variant,
71
71
  headingSize,
72
72
  size,
73
+ mounted: true,
73
74
  } },
74
75
  react_1.default.createElement("div", Object.assign({}, rest, { className: (0, clsx_1.default)("navds-accordion", className, `navds-accordion--${size}`, { "navds-accordion--indent": indent }), ref: ref }))));
75
76
  });
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AccordionContext = void 0;
4
4
  const react_1 = require("react");
5
5
  exports.AccordionContext = (0, react_1.createContext)({
6
- variant: "default",
7
6
  headingSize: "small",
8
7
  size: "medium",
9
8
  openItems: [],
9
+ mounted: false,
10
10
  });
@@ -48,7 +48,7 @@ const AccordionHeader = (0, react_1.forwardRef)((_a, ref) => {
48
48
  var { children, className, onClick } = _a, rest = __rest(_a, ["children", "className", "onClick"]);
49
49
  const itemContext = (0, react_1.useContext)(AccordionItem_1.AccordionItemContext);
50
50
  const accordionContext = (0, react_1.useContext)(AccordionContext_1.AccordionContext);
51
- if (accordionContext === null || itemContext === null) {
51
+ if (itemContext === null) {
52
52
  console.error("<Accordion.Header> has to be used within an <Accordion.Item>, which in turn must be within an <Accordion>");
53
53
  return null;
54
54
  }
@@ -58,6 +58,6 @@ const AccordionHeader = (0, react_1.forwardRef)((_a, ref) => {
58
58
  }, "aria-expanded": itemContext.open, type: "button" }),
59
59
  react_1.default.createElement("div", { className: "navds-accordion__icon-wrapper" },
60
60
  react_1.default.createElement(aksel_icons_1.ChevronDownIcon, { className: "navds-accordion__header-chevron", title: "Vis mer", "aria-hidden": true })),
61
- react_1.default.createElement(Heading_1.Heading, { size: (_b = accordionContext.headingSize) !== null && _b !== void 0 ? _b : "small", as: "span", className: "navds-accordion__header-content" }, children)));
61
+ react_1.default.createElement(Heading_1.Heading, { size: (_b = accordionContext === null || accordionContext === void 0 ? void 0 : accordionContext.headingSize) !== null && _b !== void 0 ? _b : "small", as: "span", className: "navds-accordion__header-content" }, children)));
62
62
  });
63
63
  exports.default = AccordionHeader;
@@ -60,6 +60,9 @@ const AccordionItem = (0, react_1.forwardRef)((_a, ref) => {
60
60
  }
61
61
  shouldAnimate.current = true;
62
62
  };
63
+ if (!(context === null || context === void 0 ? void 0 : context.mounted)) {
64
+ console.error("<Accordion.Item> has to be used within an <Accordion>");
65
+ }
63
66
  return (react_1.default.createElement("div", Object.assign({ className: (0, clsx_1.default)("navds-accordion__item", className, {
64
67
  "navds-accordion__item--open": open !== null && open !== void 0 ? open : internalOpen,
65
68
  "navds-accordion__item--neutral": (context === null || context === void 0 ? void 0 : context.variant) === "neutral",
@@ -46,10 +46,14 @@ const __1 = require("../..");
46
46
  const DateInput_1 = require("../DateInput");
47
47
  const context_1 = require("../context");
48
48
  const utils_1 = require("../utils");
49
- const caption_1 = require("./caption");
50
49
  const DatePickerStandalone_1 = __importDefault(require("./DatePickerStandalone"));
51
- const DayButton_1 = require("./DayButton");
52
- const TableHead_1 = require("./TableHead");
50
+ const Caption_1 = __importDefault(require("./parts/Caption"));
51
+ const DayButton_1 = __importDefault(require("./parts/DayButton"));
52
+ const DropdownCaption_1 = __importDefault(require("./parts/DropdownCaption"));
53
+ const HeadRow_1 = require("./parts/HeadRow");
54
+ const Row_1 = __importDefault(require("./parts/Row"));
55
+ const TableHead_1 = __importDefault(require("./parts/TableHead"));
56
+ const WeekNumber_1 = __importDefault(require("./parts/WeekNumber"));
53
57
  /**
54
58
  * A component that allows users to select a date from a calendar.
55
59
  *
@@ -74,36 +78,25 @@ const TableHead_1 = require("./TableHead");
74
78
  */
75
79
  exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
76
80
  var _b;
77
- var { children, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, id, defaultSelected, className, wrapperClassName, open: _open, onClose, onOpenToggle, strategy, bubbleEscape = false } = _a, rest = __rest(_a, ["children", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "id", "defaultSelected", "className", "wrapperClassName", "open", "onClose", "onOpenToggle", "strategy", "bubbleEscape"]);
81
+ var { children, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, id, defaultSelected, className, wrapperClassName, open: _open, onClose, onOpenToggle, strategy, bubbleEscape = false, onWeekNumberClick } = _a, rest = __rest(_a, ["children", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "id", "defaultSelected", "className", "wrapperClassName", "open", "onClose", "onOpenToggle", "strategy", "bubbleEscape", "onWeekNumberClick"]);
78
82
  const ariaId = (0, __1.useId)(id);
79
83
  const [open, setOpen] = (0, react_1.useState)(_open !== null && _open !== void 0 ? _open : false);
80
84
  const wrapperRef = (0, react_1.useRef)(null);
81
85
  const [selectedDates, setSelectedDates] = react_1.default.useState(defaultSelected);
82
- const handleSingleSelect = (selectedDay) => {
83
- var _a;
84
- setSelectedDates(selectedDay);
85
- selectedDay && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
86
- (rest === null || rest === void 0 ? void 0 : rest.onSelect) && (rest === null || rest === void 0 ? void 0 : rest.onSelect)(selectedDay);
87
- };
88
- const handleMultipleSelect = (selectedDays) => {
89
- setSelectedDates(selectedDays);
90
- (rest === null || rest === void 0 ? void 0 : rest.onSelect) &&
91
- (rest === null || rest === void 0 ? void 0 : rest.onSelect)(selectedDays);
92
- };
93
- const handleRangeSelect = (selectedDays) => {
94
- var _a;
95
- setSelectedDates(selectedDays);
96
- (selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.from) && (selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.to) && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
97
- (rest === null || rest === void 0 ? void 0 : rest.onSelect) &&
98
- (rest === null || rest === void 0 ? void 0 : rest.onSelect)(selectedDays);
99
- };
100
- const overrideProps = {
101
- mode: (_b = rest.mode) !== null && _b !== void 0 ? _b : "single",
102
- onSelect: (rest === null || rest === void 0 ? void 0 : rest.mode) === "single"
103
- ? handleSingleSelect
104
- : (rest === null || rest === void 0 ? void 0 : rest.mode) === "multiple"
105
- ? handleMultipleSelect
106
- : handleRangeSelect,
86
+ const mode = (_b = rest.mode) !== null && _b !== void 0 ? _b : "single";
87
+ /**
88
+ * @param selected Date | Date[] | DateRange | undefined
89
+ */
90
+ const handleSelect = (selected) => {
91
+ var _a, _b, _c;
92
+ setSelectedDates(selected);
93
+ if (rest.mode === "single") {
94
+ selected && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
95
+ }
96
+ else if (rest.mode === "range") {
97
+ (selected === null || selected === void 0 ? void 0 : selected.from) && (selected === null || selected === void 0 ? void 0 : selected.to) && ((_b = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _b !== void 0 ? _b : setOpen(false));
98
+ }
99
+ (_c = rest === null || rest === void 0 ? void 0 : rest.onSelect) === null || _c === void 0 ? void 0 : _c.call(rest, selected);
107
100
  };
108
101
  return (react_1.default.createElement(context_1.DateContext.Provider, { value: {
109
102
  open: _open !== null && _open !== void 0 ? _open : open,
@@ -119,10 +112,13 @@ exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
119
112
  var _a;
120
113
  (_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false);
121
114
  }, placement: "bottom-start", id: ariaId, role: "dialog", ref: ref, strategy: strategy, className: "navds-date__popover", bubbleEscape: bubbleEscape },
122
- react_1.default.createElement(react_day_picker_1.DayPicker, Object.assign({ locale: (0, utils_1.getLocaleFromString)(locale) }, overrideProps, { selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
123
- Caption: dropdownCaption ? caption_1.DropdownCaption : caption_1.Caption,
124
- Day: DayButton_1.DayButton,
125
- Head: TableHead_1.TableHead,
115
+ react_1.default.createElement(react_day_picker_1.DayPicker, Object.assign({ locale: (0, utils_1.getLocaleFromString)(locale), mode: mode, onSelect: handleSelect, selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
116
+ Caption: dropdownCaption ? DropdownCaption_1.default : Caption_1.default,
117
+ Head: TableHead_1.default,
118
+ HeadRow: HeadRow_1.HeadRow,
119
+ WeekNumber: WeekNumber_1.default,
120
+ Row: Row_1.default,
121
+ Day: DayButton_1.default,
126
122
  }, className: (0, clsx_1.default)("navds-date", className), classNames: {
127
123
  vhidden: "navds-sr-only",
128
124
  }, disabled: (day) => {
@@ -132,7 +128,7 @@ exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
132
128
  weekend: (day) => disableWeekends && (0, isWeekend_1.default)(day),
133
129
  }, modifiersClassNames: {
134
130
  weekend: "rdp-day__weekend",
135
- }, showWeekNumber: showWeekNumber, fixedWeeks: true, showOutsideDays: true }, (0, __1.omit)(rest, ["onSelect"]))))))));
131
+ }, showWeekNumber: showWeekNumber, onWeekNumberClick: mode === "multiple" ? onWeekNumberClick : undefined, fixedWeeks: true, showOutsideDays: true }, (0, __1.omit)(rest, ["onSelect"]))))))));
136
132
  });
137
133
  exports.DatePicker.Standalone = DatePickerStandalone_1.default;
138
134
  exports.DatePicker.Input = DateInput_1.DatePickerInput;
@@ -44,42 +44,39 @@ const react_1 = __importStar(require("react"));
44
44
  const react_day_picker_1 = require("react-day-picker");
45
45
  const __1 = require("../..");
46
46
  const utils_1 = require("../utils");
47
- const caption_1 = require("./caption");
48
- const TableHead_1 = require("./TableHead");
47
+ const TableHead_1 = __importDefault(require("./parts/TableHead"));
48
+ const WeekNumber_1 = __importDefault(require("./parts/WeekNumber"));
49
+ const Caption_1 = __importDefault(require("./parts/Caption"));
50
+ const DropdownCaption_1 = __importDefault(require("./parts/DropdownCaption"));
51
+ const Row_1 = __importDefault(require("./parts/Row"));
52
+ const HeadRow_1 = require("./parts/HeadRow");
53
+ const DayButton_1 = __importDefault(require("./parts/DayButton"));
49
54
  exports.DatePickerStandalone = (0, react_1.forwardRef)((_a, ref) => {
50
55
  var _b;
51
- var { className, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, defaultSelected, onSelect, fixedWeeks = true } = _a, rest = __rest(_a, ["className", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "defaultSelected", "onSelect", "fixedWeeks"]);
56
+ var { className, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, defaultSelected, onSelect, fixedWeeks = false, onWeekNumberClick } = _a, rest = __rest(_a, ["className", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "defaultSelected", "onSelect", "fixedWeeks", "onWeekNumberClick"]);
52
57
  const [selectedDates, setSelectedDates] = react_1.default.useState(defaultSelected);
53
- const handleSingleSelect = (selectedDay) => {
54
- setSelectedDates(selectedDay);
55
- onSelect && onSelect(selectedDay);
56
- };
57
- const handleMultipleSelect = (selectedDays) => {
58
- setSelectedDates(selectedDays);
59
- onSelect && onSelect(selectedDays);
60
- };
61
- const handleRangeSelect = (selectedDays) => {
62
- setSelectedDates(selectedDays);
63
- onSelect && onSelect(selectedDays);
64
- };
65
- const overrideProps = {
66
- mode: (_b = rest.mode) !== null && _b !== void 0 ? _b : "single",
67
- onSelect: (rest === null || rest === void 0 ? void 0 : rest.mode) === "single"
68
- ? handleSingleSelect
69
- : (rest === null || rest === void 0 ? void 0 : rest.mode) === "multiple"
70
- ? handleMultipleSelect
71
- : handleRangeSelect,
58
+ const mode = (_b = rest.mode) !== null && _b !== void 0 ? _b : "single";
59
+ /**
60
+ * @param selected Date | Date[] | DateRange | undefined
61
+ */
62
+ const handleSelect = (selected) => {
63
+ setSelectedDates(selected);
64
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(selected);
72
65
  };
73
66
  return (react_1.default.createElement("div", { ref: ref, className: (0, clsx_1.default)("navds-date__standalone-wrapper", className) },
74
- react_1.default.createElement(react_day_picker_1.DayPicker, Object.assign({ locale: (0, utils_1.getLocaleFromString)(locale) }, overrideProps, { selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
75
- Caption: dropdownCaption ? caption_1.DropdownCaption : caption_1.Caption,
76
- Head: TableHead_1.TableHead,
67
+ react_1.default.createElement(react_day_picker_1.DayPicker, Object.assign({ locale: (0, utils_1.getLocaleFromString)(locale), mode: mode, onSelect: handleSelect, selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
68
+ Caption: dropdownCaption ? DropdownCaption_1.default : Caption_1.default,
69
+ Head: TableHead_1.default,
70
+ HeadRow: HeadRow_1.HeadRow,
71
+ WeekNumber: WeekNumber_1.default,
72
+ Row: Row_1.default,
73
+ Day: DayButton_1.default,
77
74
  }, className: "navds-date", classNames: { vhidden: "navds-sr-only" }, disabled: (day) => {
78
75
  return ((disableWeekends && (0, isWeekend_1.default)(day)) || (0, react_day_picker_1.isMatch)(day, disabled));
79
76
  }, weekStartsOn: 1, initialFocus: false, labels: utils_1.labels, modifiers: {
80
77
  weekend: (day) => disableWeekends && (0, isWeekend_1.default)(day),
81
78
  }, modifiersClassNames: {
82
79
  weekend: "rdp-day__weekend",
83
- }, showWeekNumber: showWeekNumber, fixedWeeks: fixedWeeks, showOutsideDays: true }, (0, __1.omit)(rest, ["onSelect", "children", "id"])))));
80
+ }, showWeekNumber: showWeekNumber, onWeekNumberClick: mode === "multiple" ? onWeekNumberClick : undefined, fixedWeeks: fixedWeeks, showOutsideDays: true }, (0, __1.omit)(rest, ["children", "id"])))));
84
81
  });
85
82
  exports.default = exports.DatePickerStandalone;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DatePickerCaption = void 0;
7
+ const aksel_icons_1 = require("@navikt/aksel-icons");
8
+ const react_1 = __importDefault(require("react"));
9
+ const react_day_picker_1 = require("react-day-picker");
10
+ const __1 = require("../../..");
11
+ const WeekRow_1 = __importDefault(require("./WeekRow"));
12
+ /**
13
+ * https://github.com/gpbl/react-day-picker/tree/main/src/components/Caption
14
+ */
15
+ const DatePickerCaption = ({ displayMonth, id }) => {
16
+ const { goToMonth, nextMonth, previousMonth } = (0, react_day_picker_1.useNavigation)();
17
+ const { labels: { labelPrevious, labelNext }, formatters: { formatCaption }, locale, } = (0, react_day_picker_1.useDayPicker)();
18
+ const previousLabel = labelPrevious(previousMonth, { locale });
19
+ const nextLabel = labelNext(nextMonth, { locale });
20
+ return (react_1.default.createElement(react_1.default.Fragment, null,
21
+ react_1.default.createElement("div", { className: "navds-date__caption" },
22
+ react_1.default.createElement(__1.Button, { variant: "tertiary", disabled: !previousMonth, onClick: () => previousMonth && goToMonth(previousMonth), icon: react_1.default.createElement(aksel_icons_1.ArrowLeftIcon, { title: previousLabel }), className: "navds-date__caption-button", type: "button" }),
23
+ react_1.default.createElement(__1.Label, { as: "span", "aria-live": "polite", "aria-atomic": "true", id: id, className: "navds-date__caption-label" }, formatCaption(displayMonth, { locale })),
24
+ react_1.default.createElement(__1.Button, { icon: react_1.default.createElement(aksel_icons_1.ArrowRightIcon, { title: nextLabel }), onClick: () => nextMonth && goToMonth(nextMonth), disabled: !nextMonth, variant: "tertiary", className: "navds-date__caption-button", type: "button" })),
25
+ react_1.default.createElement(WeekRow_1.default, { displayMonth: displayMonth })));
26
+ };
27
+ exports.DatePickerCaption = DatePickerCaption;
28
+ exports.default = exports.DatePickerCaption;
@@ -26,7 +26,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.DayButton = void 0;
30
29
  const format_1 = __importDefault(require("date-fns/format"));
31
30
  const react_1 = __importStar(require("react"));
32
31
  const react_day_picker_1 = require("react-day-picker");
@@ -43,4 +42,4 @@ const DayButton = (props) => {
43
42
  }
44
43
  return (react_1.default.createElement(react_day_picker_1.Button, Object.assign({ name: "day", ref: buttonRef }, dayRender.buttonProps, { "aria-label": dateTime, "aria-hidden": dayRender.activeModifiers.outside })));
45
44
  };
46
- exports.DayButton = DayButton;
45
+ exports.default = DayButton;
@@ -14,6 +14,10 @@ const __1 = require("../../..");
14
14
  const get_dates_1 = require("../../utils/get-dates");
15
15
  const labels_1 = require("../../utils/labels");
16
16
  const date_fns_1 = require("date-fns");
17
+ const WeekRow_1 = __importDefault(require("./WeekRow"));
18
+ /**
19
+ * https://github.com/gpbl/react-day-picker/tree/main/src/components/CaptionDropdowns
20
+ */
17
21
  const DropdownCaption = ({ displayMonth, id }) => {
18
22
  const { goToMonth, nextMonth, previousMonth } = (0, react_day_picker_1.useNavigation)();
19
23
  const { fromDate, toDate, formatters: { formatYearCaption, formatMonthCaption, formatCaption }, labels: { labelPrevious, labelNext }, locale, } = (0, react_day_picker_1.useDayPicker)();
@@ -32,13 +36,15 @@ const DropdownCaption = ({ displayMonth, id }) => {
32
36
  const nextLabel = labelNext(nextMonth, { locale });
33
37
  const yearDropdownLabel = (0, labels_1.labelYearDropdown)(locale);
34
38
  const MonthDropdownLabel = (0, labels_1.labelMonthDropdown)(locale);
35
- return (react_1.default.createElement("div", { className: "navds-date__caption-dropdown" },
36
- react_1.default.createElement("span", { "aria-live": "polite", "aria-atomic": "true", id: id, className: "navds-sr-only" }, formatCaption(displayMonth, { locale })),
37
- react_1.default.createElement(__1.Button, { "aria-label": previousLabel, variant: "tertiary", disabled: !previousMonth, onClick: () => previousMonth && goToMonth(previousMonth), icon: react_1.default.createElement(aksel_icons_1.ArrowLeftIcon, { title: "velg forrige m\u00E5ned" }), className: "navds-date__caption-button", type: "button" }),
38
- react_1.default.createElement("div", { className: "navds-date__caption__month-wrapper" },
39
- react_1.default.createElement(__1.Select, { label: MonthDropdownLabel, hideLabel: true, className: "navds-date__caption__month", value: displayMonth.getMonth(), onChange: handleMonthChange }, months.map((m) => (react_1.default.createElement("option", { key: m.getMonth(), value: m.getMonth() }, formatMonthCaption(m, { locale }))))),
40
- react_1.default.createElement(__1.Select, { label: yearDropdownLabel, hideLabel: true, value: displayMonth.getFullYear(), onChange: handleYearChange, className: "navds-date__caption__year" }, years.map((year) => (react_1.default.createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale })))))),
41
- react_1.default.createElement(__1.Button, { "aria-label": nextLabel, icon: react_1.default.createElement(aksel_icons_1.ArrowRightIcon, { title: "velg neste m\u00E5ned" }), onClick: () => nextMonth && goToMonth(nextMonth), disabled: !nextMonth, variant: "tertiary", className: "navds-date__caption-button", type: "button" })));
39
+ return (react_1.default.createElement(react_1.default.Fragment, null,
40
+ react_1.default.createElement("div", { className: "navds-date__caption" },
41
+ react_1.default.createElement("span", { "aria-live": "polite", "aria-atomic": "true", id: id, className: "navds-sr-only" }, formatCaption(displayMonth, { locale })),
42
+ react_1.default.createElement(__1.Button, { variant: "tertiary", disabled: !previousMonth, onClick: () => previousMonth && goToMonth(previousMonth), icon: react_1.default.createElement(aksel_icons_1.ArrowLeftIcon, { title: previousLabel }), className: "navds-date__caption-button", type: "button" }),
43
+ react_1.default.createElement("div", { className: "navds-date__caption" },
44
+ react_1.default.createElement(__1.Select, { label: MonthDropdownLabel, hideLabel: true, className: "navds-date__caption__month", value: displayMonth.getMonth(), onChange: handleMonthChange }, months.map((m) => (react_1.default.createElement("option", { key: m.getMonth(), value: m.getMonth() }, formatMonthCaption(m, { locale }))))),
45
+ react_1.default.createElement(__1.Select, { label: yearDropdownLabel, hideLabel: true, value: displayMonth.getFullYear(), onChange: handleYearChange, className: "navds-date__caption__year" }, years.map((year) => (react_1.default.createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale })))))),
46
+ react_1.default.createElement(__1.Button, { icon: react_1.default.createElement(aksel_icons_1.ArrowRightIcon, { title: nextLabel }), onClick: () => nextMonth && goToMonth(nextMonth), disabled: !nextMonth, variant: "tertiary", className: "navds-date__caption-button", type: "button" })),
47
+ react_1.default.createElement(WeekRow_1.default, { displayMonth: displayMonth })));
42
48
  };
43
49
  exports.DropdownCaption = DropdownCaption;
44
50
  exports.default = exports.DropdownCaption;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getWeekdays = exports.HeadRow = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const date_fns_1 = require("date-fns");
9
+ const react_day_picker_1 = require("react-day-picker");
10
+ const responsive_1 = require("../../../layout/responsive");
11
+ /**
12
+ * https://github.com/gpbl/react-day-picker/tree/main/src/components/HeadRow
13
+ */
14
+ function HeadRow() {
15
+ const { classNames, styles, showWeekNumber, locale, formatters: { formatWeekdayName }, labels: { labelWeekday }, } = (0, react_day_picker_1.useDayPicker)();
16
+ const weekdays = getWeekdays(locale);
17
+ return (react_1.default.createElement("tr", { style: styles.head_row, className: classNames.head_row },
18
+ showWeekNumber && (react_1.default.createElement(responsive_1.Hide, { below: "sm", asChild: true },
19
+ react_1.default.createElement("td", { style: styles.head_cell, className: classNames.head_cell }))),
20
+ weekdays.map((weekday, i) => (react_1.default.createElement("th", { key: i, scope: "col", className: classNames.head_cell, style: styles.head_cell, "aria-label": labelWeekday(weekday, { locale }) }, formatWeekdayName(weekday, { locale }))))));
21
+ }
22
+ exports.HeadRow = HeadRow;
23
+ /**
24
+ * Generate a series of 7 days, starting from the week, to use for formatting
25
+ * the weekday names (Monday, Tuesday, etc.).
26
+ */
27
+ function getWeekdays(locale) {
28
+ const start = (0, date_fns_1.startOfWeek)(new Date(), { locale, weekStartsOn: 1 });
29
+ const days = [];
30
+ for (let i = 0; i < 7; i++) {
31
+ const day = (0, date_fns_1.addDays)(start, i);
32
+ days.push(day);
33
+ }
34
+ return days;
35
+ }
36
+ exports.getWeekdays = getWeekdays;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const date_fns_1 = require("date-fns");
8
+ const react_day_picker_1 = require("react-day-picker");
9
+ const WeekNumber_1 = __importDefault(require("./WeekNumber"));
10
+ const responsive_1 = require("../../../layout/responsive");
11
+ /**
12
+ * https://github.com/gpbl/react-day-picker/tree/main/src/components/Row
13
+ */
14
+ function Row(props) {
15
+ const { styles, classNames, showWeekNumber } = (0, react_day_picker_1.useDayPicker)();
16
+ return (react_1.default.createElement("tr", { className: classNames.row, style: styles.row },
17
+ showWeekNumber && (react_1.default.createElement(responsive_1.Hide, { below: "sm", asChild: true },
18
+ react_1.default.createElement("td", { className: classNames.cell, style: styles.cell },
19
+ react_1.default.createElement(WeekNumber_1.default, { number: props.weekNumber, dates: props.dates })))),
20
+ props.dates.map((date) => (react_1.default.createElement("td", { className: classNames.cell, style: styles.cell, key: (0, date_fns_1.getUnixTime)(date) },
21
+ react_1.default.createElement(react_day_picker_1.Day, { displayMonth: props.displayMonth, date: date }))))));
22
+ }
23
+ exports.default = Row;
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TableHead = void 0;
7
6
  const react_1 = __importDefault(require("react"));
8
7
  const react_day_picker_1 = require("react-day-picker");
9
- /** Render the table head. */
8
+ /**
9
+ * https://github.com/gpbl/react-day-picker/tree/main/src/components/Head
10
+ */
10
11
  function TableHead() {
11
12
  var _a;
12
13
  const { classNames, styles, components } = (0, react_day_picker_1.useDayPicker)();
@@ -14,4 +15,4 @@ function TableHead() {
14
15
  return (react_1.default.createElement("thead", { style: styles.head, className: classNames.head, "aria-hidden": true },
15
16
  react_1.default.createElement(HeadRowComponent, null)));
16
17
  }
17
- exports.TableHead = TableHead;
18
+ exports.default = TableHead;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* https://github.com/gpbl/react-day-picker/blob/7f78cd5/src/components/WeekNumber/WeekNumber.tsx#L21 */
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_day_picker_1 = require("react-day-picker");
9
+ const labels_1 = require("../../utils/labels");
10
+ /**
11
+ * https://github.com/gpbl/react-day-picker/tree/main/src/components/WeekNumber
12
+ */
13
+ function WeekNumber(props) {
14
+ const { number: weekNumber, dates } = props;
15
+ const { onWeekNumberClick, styles, classNames, locale: { code }, } = (0, react_day_picker_1.useDayPicker)();
16
+ const weekLabel = (0, labels_1.labelWeekNumber)({
17
+ week: Number(weekNumber),
18
+ localeCode: code,
19
+ });
20
+ if (!onWeekNumberClick) {
21
+ return (react_1.default.createElement("span", { className: classNames.weeknumber, style: styles.weeknumber, "aria-label": weekLabel }, weekNumber));
22
+ }
23
+ const label = (0, labels_1.labelWeekNumberButton)({
24
+ week: Number(weekNumber),
25
+ localeCode: code,
26
+ });
27
+ const handleClick = function (e) {
28
+ onWeekNumberClick(weekNumber, dates, e);
29
+ };
30
+ if (props === null || props === void 0 ? void 0 : props.headerVersion) {
31
+ return (react_1.default.createElement(react_day_picker_1.Button, { name: "week-number", "aria-label": label, className: classNames.weeknumber, style: styles.weeknumber, onClick: handleClick }, weekNumber));
32
+ }
33
+ return (react_1.default.createElement(react_day_picker_1.Button, { name: "week-number", "aria-label": label, className: classNames.weeknumber, style: styles.weeknumber, onClick: handleClick }, weekNumber));
34
+ }
35
+ exports.default = WeekNumber;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_day_picker_1 = require("react-day-picker");
8
+ const responsive_1 = require("../../../layout/responsive");
9
+ const typography_1 = require("../../../typography");
10
+ const get_month_weeks_1 = require("../../utils/get-month-weeks");
11
+ const labels_1 = require("../../utils/labels");
12
+ const WeekNumber_1 = __importDefault(require("./WeekNumber"));
13
+ const util_1 = require("../../../util");
14
+ const WeekRow = ({ displayMonth }) => {
15
+ const { locale, fixedWeeks, onWeekNumberClick } = (0, react_day_picker_1.useDayPicker)();
16
+ const labelId = (0, util_1.useId)();
17
+ if (!onWeekNumberClick) {
18
+ return null;
19
+ }
20
+ const weeks = (0, get_month_weeks_1.getMonthWeeks)(displayMonth, {
21
+ useFixedWeeks: Boolean(fixedWeeks),
22
+ locale,
23
+ });
24
+ return (react_1.default.createElement(responsive_1.Show, { below: "sm", asChild: true },
25
+ react_1.default.createElement("table", { className: "rdp-table", role: "grid" },
26
+ react_1.default.createElement("tbody", { className: "rdp-tbody" },
27
+ react_1.default.createElement("tr", { className: "rdp-row navds-date__week-row" },
28
+ react_1.default.createElement(typography_1.Detail, { as: "th", weight: "semibold", className: "rdp-cell navds-date__week-cell" },
29
+ react_1.default.createElement("span", { className: "navds-date__week-wrapper", id: labelId }, (0, labels_1.labelWeek)(locale === null || locale === void 0 ? void 0 : locale.code))),
30
+ weeks.map((week) => (react_1.default.createElement("td", { key: week.weekNumber, className: "rdp-cell navds-date__week-cell" },
31
+ react_1.default.createElement("span", { className: "navds-date__week-wrapper" },
32
+ react_1.default.createElement(WeekNumber_1.default, { number: week.weekNumber, dates: week.dates, headerVersion: true }))))))))));
33
+ };
34
+ exports.default = WeekRow;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.daysToMonthWeeks = exports.getMonthWeeks = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ function getMonthWeeks(month, options) {
6
+ const _options = Object.assign(Object.assign({}, options), { weekStartsOn: 1 });
7
+ const weeksInMonth = daysToMonthWeeks((0, date_fns_1.startOfMonth)(month), (0, date_fns_1.endOfMonth)(month), _options);
8
+ if (_options === null || _options === void 0 ? void 0 : _options.useFixedWeeks) {
9
+ // Add extra weeks to the month, up to 6 weeks
10
+ const nrOfMonthWeeks = (0, date_fns_1.getWeeksInMonth)(month, _options);
11
+ if (nrOfMonthWeeks < 6) {
12
+ const lastWeek = weeksInMonth[weeksInMonth.length - 1];
13
+ const lastDate = lastWeek.dates[lastWeek.dates.length - 1];
14
+ const toDate = (0, date_fns_1.addWeeks)(lastDate, 6 - nrOfMonthWeeks);
15
+ const extraWeeks = daysToMonthWeeks((0, date_fns_1.addWeeks)(lastDate, 1), toDate, _options);
16
+ weeksInMonth.push(...extraWeeks);
17
+ }
18
+ }
19
+ return weeksInMonth;
20
+ }
21
+ exports.getMonthWeeks = getMonthWeeks;
22
+ /** Return the weeks between two dates. */
23
+ function daysToMonthWeeks(fromDate, toDate, options) {
24
+ const toWeek = (0, date_fns_1.endOfWeek)(toDate, options);
25
+ const fromWeek = (0, date_fns_1.startOfWeek)(fromDate, options);
26
+ const nOfDays = (0, date_fns_1.differenceInCalendarDays)(toWeek, fromWeek);
27
+ const days = [];
28
+ for (let i = 0; i <= nOfDays; i++) {
29
+ days.push((0, date_fns_1.addDays)(fromWeek, i));
30
+ }
31
+ const weeksInMonth = days.reduce((result, date) => {
32
+ const weekNumber = (0, date_fns_1.getWeek)(date, options);
33
+ const existingWeek = result.find((value) => value.weekNumber === weekNumber);
34
+ if (existingWeek) {
35
+ existingWeek.dates.push(date);
36
+ return result;
37
+ }
38
+ result.push({
39
+ weekNumber,
40
+ dates: [date],
41
+ });
42
+ return result;
43
+ }, []);
44
+ return weeksInMonth;
45
+ }
46
+ exports.daysToMonthWeeks = daysToMonthWeeks;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.labels = exports.labelPrevYear = exports.labelNextYear = exports.labelMonthDropdown = exports.labelYearDropdown = void 0;
3
+ exports.labelWeek = exports.labelWeekNumberButton = exports.labelWeekNumber = exports.labels = exports.labelPrevYear = exports.labelNextYear = exports.labelMonthDropdown = exports.labelYearDropdown = void 0;
4
4
  const labelNext = (date, options) => {
5
5
  var _a;
6
6
  switch ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) {
@@ -83,3 +83,42 @@ exports.labels = {
83
83
  labelNext,
84
84
  labelPrevious,
85
85
  };
86
+ const labelWeekNumber = ({ localeCode, week, }) => {
87
+ switch (localeCode) {
88
+ case "nb":
89
+ return `Uke ${week}`;
90
+ case "nn":
91
+ return `Veke ${week}`;
92
+ case "en-GB":
93
+ return `Week ${week}`;
94
+ default:
95
+ return `Uke ${week}`;
96
+ }
97
+ };
98
+ exports.labelWeekNumber = labelWeekNumber;
99
+ const labelWeekNumberButton = ({ localeCode, week, }) => {
100
+ switch (localeCode) {
101
+ case "nb":
102
+ return `Velg uke ${week}`;
103
+ case "nn":
104
+ return `Vel veke ${week}`;
105
+ case "en-GB":
106
+ return `Pick week ${week}`;
107
+ default:
108
+ return `Velg uke ${week}`;
109
+ }
110
+ };
111
+ exports.labelWeekNumberButton = labelWeekNumberButton;
112
+ const labelWeek = (localeCode) => {
113
+ switch (localeCode) {
114
+ case "nb":
115
+ return `Uke:`;
116
+ case "nn":
117
+ return `Veke:`;
118
+ case "en-GB":
119
+ return `Week:`;
120
+ default:
121
+ return `Uke:`;
122
+ }
123
+ };
124
+ exports.labelWeek = labelWeek;
package/cjs/index.js CHANGED
@@ -48,6 +48,7 @@ __exportStar(require("./toggle-group"), exports);
48
48
  __exportStar(require("./tooltip"), exports);
49
49
  __exportStar(require("./typography"), exports);
50
50
  __exportStar(require("./util"), exports);
51
+ __exportStar(require("./layout/bleed"), exports);
51
52
  __exportStar(require("./layout/box"), exports);
52
53
  __exportStar(require("./layout/stack"), exports);
53
54
  __exportStar(require("./layout/grid"), exports);
@@ -40,10 +40,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Bleed = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
+ const css_1 = require("../utilities/css");
44
+ const Slot_1 = require("../../util/Slot");
45
+ /**
46
+ * Foundational Layout-primitive for generic encapsulation & styling.
47
+ *
48
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/primitives/Bleed)
49
+ * @see 🏷️ {@link BleedProps}
50
+ * @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
51
+ *
52
+ * @example
53
+ * <Box padding="4">
54
+ * <Bleed marginInline="4" marginBlock="4">
55
+ * <BodyLong>Some content</BodyLong>
56
+ * </Bleed>
57
+ * </Box>
58
+ */
43
59
  exports.Bleed = (0, react_1.forwardRef)((_a, ref) => {
44
- var { as: Component = "div", preservePadding = false, className } = _a, rest = __rest(_a, ["as", "preservePadding", "className"]);
45
- return (react_1.default.createElement(Component, Object.assign({}, rest, { ref: ref, className: (0, clsx_1.default)("navds-bleed", className, {
46
- "navds-bleed--preserve": preservePadding,
47
- }) })));
60
+ var { className, marginInline, marginBlock, reflectivePadding, style: _style, asChild } = _a, rest = __rest(_a, ["className", "marginInline", "marginBlock", "reflectivePadding", "style", "asChild"]);
61
+ let style = Object.assign(Object.assign(Object.assign({}, _style), (0, css_1.getResponsiveProps)("bleed", "margin-inline", "spacing", marginInline, true, ["0", "full", "px"])), (0, css_1.getResponsiveProps)("bleed", "margin-block", "spacing", marginBlock, true, ["0", "px"]));
62
+ if (reflectivePadding) {
63
+ style = Object.assign(Object.assign(Object.assign({}, style), (0, css_1.getResponsiveProps)("bleed", "padding-inline", "spacing", marginInline, false, ["0", "full", "px"])), (0, css_1.getResponsiveProps)("bleed", "padding-block", "spacing", marginBlock, false, ["0", "px"]));
64
+ }
65
+ const Comp = asChild ? Slot_1.Slot : "div";
66
+ return (react_1.default.createElement(Comp, Object.assign({}, rest, { className: (0, clsx_1.default)("navds-bleed", className, {
67
+ "navds-bleed--padding": reflectivePadding,
68
+ }), ref: ref, style: style })));
48
69
  });
49
- exports.default = exports.Bleed;
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.Bleed = void 0;
7
4
  var Bleed_1 = require("./Bleed");
8
- Object.defineProperty(exports, "Bleed", { enumerable: true, get: function () { return __importDefault(Bleed_1).default; } });
5
+ Object.defineProperty(exports, "Bleed", { enumerable: true, get: function () { return Bleed_1.Bleed; } });
@@ -79,6 +79,6 @@ exports.Box = (0, react_1.forwardRef)((_a, ref) => {
79
79
  .split(" ")
80
80
  .map((x) => `${x}px`)
81
81
  .join(" ")
82
- : undefined }), (0, css_1.getResponsiveProps)("box", "border-radius", "border-radius", borderRadius, ["0"])), (0, css_1.getResponsiveProps)("box", "padding", "spacing", padding)), (0, css_1.getResponsiveProps)("box", "padding-inline", "spacing", paddingInline)), (0, css_1.getResponsiveProps)("box", "padding-block", "spacing", paddingBlock));
82
+ : undefined }), (0, css_1.getResponsiveProps)("box", "border-radius", "border-radius", borderRadius, false, ["0"])), (0, css_1.getResponsiveProps)("box", "padding", "spacing", padding)), (0, css_1.getResponsiveProps)("box", "padding-inline", "spacing", paddingInline)), (0, css_1.getResponsiveProps)("box", "padding-block", "spacing", paddingBlock));
83
83
  return (react_1.default.createElement(Component, Object.assign({}, rest, { className: (0, clsx_1.default)("navds-box", className), ref: ref, style: style })));
84
84
  });