@telus-uds/components-web 2.7.0 → 2.8.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.
@@ -5,7 +5,8 @@ import momentPropTypes from 'react-moment-proptypes';
5
5
  import 'react-dates/initialize';
6
6
  import SingleDatePicker from 'react-dates/lib/components/SingleDatePicker';
7
7
  import DayPickerSingleDateController from 'react-dates/lib/components/DayPickerSingleDateController';
8
- import { IconButton, InputSupports, selectSystemProps, useCopy, useViewport, useThemeTokens, applyTextStyles } from '@telus-uds/components-base';
8
+ import { IconButton, TextInput, selectSystemProps, useCopy, useViewport, useThemeTokens, applyTextStyles } from '@telus-uds/components-base';
9
+ import moment from 'moment';
9
10
  import CalendarContainer from './CalendarContainer';
10
11
  import dictionary from './dictionary';
11
12
  import { htmlAttrs } from '../utils';
@@ -13,6 +14,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
13
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
15
  import { Fragment as _Fragment } from "react/jsx-runtime";
15
16
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs]);
17
+ const dateFormat = 'DD / MM / YYYY';
18
+ const dateFormatWithoutSpaces = 'DD/MM/YYYY';
16
19
 
17
20
  const getResponsiveDaySize = function () {
18
21
  let inline = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -49,6 +52,13 @@ const MonthCenterContainer = /*#__PURE__*/styled.div.withConfig({
49
52
  display: 'flex',
50
53
  justifyContent: 'center'
51
54
  });
55
+ const DateInputWrapper = /*#__PURE__*/styled.div.withConfig({
56
+ displayName: "DatePicker__DateInputWrapper",
57
+ componentId: "components-web__sc-mz8fi3-1"
58
+ })({
59
+ display: 'flex',
60
+ flexDirection: 'column'
61
+ });
52
62
  /**
53
63
  * Use DatePicker to select a date on a calendar.
54
64
  *
@@ -93,6 +103,8 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
93
103
  } = _ref;
94
104
  const [inputDate, setInputDate] = useState(date);
95
105
  const [isFocused, setIsFocused] = useState(false);
106
+ const [inputText, setInputText] = useState(moment(date, dateFormat, true).isValid() ? date : '');
107
+ const [isClickedInside, setIsClickedInside] = useState(false);
96
108
  const getCopy = useCopy({
97
109
  dictionary,
98
110
  copy
@@ -102,21 +114,50 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
102
114
  let {
103
115
  focused
104
116
  } = _ref2;
105
- setIsFocused(focused);
117
+
118
+ if (!isClickedInside) {
119
+ setIsFocused(focused);
120
+ }
121
+
122
+ setIsClickedInside(false);
123
+ };
124
+
125
+ const handleFocus = () => {
126
+ setIsFocused(true);
127
+ };
128
+
129
+ const handleMouseDown = event => {
130
+ if (event.target.tagName === 'INPUT') {
131
+ setIsClickedInside(true);
132
+ setIsFocused(true);
133
+ } else {
134
+ event.stopPropagation();
135
+ }
106
136
  };
107
137
 
108
138
  const onChange = value => {
109
139
  setInputDate(value);
140
+ setInputText(value.format(dateFormat));
110
141
  if (onDateChange) onDateChange(value);
111
142
  };
112
143
 
144
+ const onChangeInput = value => {
145
+ if (moment(value.replace(/\s/g, ''), dateFormatWithoutSpaces, true).isValid()) {
146
+ setInputDate(moment(value, dateFormat));
147
+ if (onDateChange) onDateChange(moment(value, dateFormat));
148
+ setInputText(moment(value, dateFormatWithoutSpaces).format(dateFormat));
149
+ } else {
150
+ setInputText(value);
151
+ }
152
+ };
153
+
113
154
  const viewport = useViewport();
114
155
  const daySize = getResponsiveDaySize(inline, viewport);
115
156
  const circleSize = getResponsiveCircleSize(inline, viewport);
116
157
  const value = date ?? inputDate;
117
158
  const HiddenInputFieldContainer = /*#__PURE__*/styled.div.withConfig({
118
159
  displayName: "DatePicker__HiddenInputFieldContainer",
119
- componentId: "components-web__sc-mz8fi3-1"
160
+ componentId: "components-web__sc-mz8fi3-2"
120
161
  })(["height:", ";width:", ";overflow:hidden;"], props => props.height, props => props.width);
121
162
  const {
122
163
  hiddenInputFieldContainerHeight,
@@ -182,43 +223,77 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
182
223
  calendarMonthFontTokens: calendarMonthFontTokens,
183
224
  calendarWeekFontTokens: calendarWeekFontTokens,
184
225
  defaultFontTokens: defaultFontTokens,
185
- children: /*#__PURE__*/_jsx(InputSupports, {
186
- copy: copy,
187
- feedback: feedback,
188
- hint: hint,
189
- hintPosition: hintPosition,
190
- label: ((_dictionary$copy = dictionary[copy]) === null || _dictionary$copy === void 0 ? void 0 : _dictionary$copy.roleDescription) ?? label,
191
- nativeID: id,
192
- tooltip: tooltip,
193
- validation: validation,
194
- children: inline ? /*#__PURE__*/_jsxs(_Fragment, {
195
- children: [/*#__PURE__*/_jsx(HiddenInputFieldContainer, {
196
- height: hiddenInputFieldContainerHeight,
197
- width: hiddenInputFieldContainerWidth,
198
- children: /*#__PURE__*/_jsx("input", {
199
- ref: ref,
200
- id: id,
201
- type: "text",
202
- value: (value === null || value === void 0 ? void 0 : value.format('YYYY-MM-DD')) ?? '',
203
- readOnly: true
204
- })
205
- }), /*#__PURE__*/_jsx(DayPickerSingleDateController, {
226
+ children: inline ? /*#__PURE__*/_jsxs(_Fragment, {
227
+ children: [/*#__PURE__*/_jsx(HiddenInputFieldContainer, {
228
+ height: hiddenInputFieldContainerHeight,
229
+ width: hiddenInputFieldContainerWidth,
230
+ children: /*#__PURE__*/_jsx("input", {
231
+ ref: ref,
232
+ id: id,
233
+ type: "text",
234
+ value: (value === null || value === void 0 ? void 0 : value.format('DD/MM/YYYY')) ?? '',
235
+ readOnly: true
236
+ })
237
+ }), /*#__PURE__*/_jsx(DayPickerSingleDateController, {
238
+ date: value,
239
+ onDateChange: onChange,
240
+ focused: isFocused,
241
+ onFocusChange: onFocusChange,
242
+ numberOfMonths: 1,
243
+ hideKeyboardShortcutsPanel: true,
244
+ keepOpenOnDateSelect: false,
245
+ daySize: daySize,
246
+ renderNavPrevButton: renderPrevButton,
247
+ renderNavNextButton: renderNextButton,
248
+ isOutsideRange: isDayDisabled,
249
+ phrases: getCopy(),
250
+ renderMonthElement: _ref5 => {
251
+ let {
252
+ month
253
+ } = _ref5;
254
+ return /*#__PURE__*/_jsx(MonthCenterContainer, {
255
+ children: /*#__PURE__*/_jsxs("div", {
256
+ children: [dictionary[copy] ? dictionary[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
257
+ })
258
+ });
259
+ },
260
+ renderWeekHeaderElement: day => /*#__PURE__*/_jsx("div", {
261
+ children: dictionary[copy] ? dictionary[copy].weekDays[day] : day
262
+ })
263
+ })]
264
+ }) : /*#__PURE__*/_jsx(DateInputWrapper, {
265
+ onMouseDown: handleMouseDown,
266
+ onFocus: handleFocus,
267
+ children: /*#__PURE__*/_jsx(TextInput, {
268
+ copy: copy,
269
+ feedback: feedback,
270
+ hint: hint,
271
+ placeholder: "DD / MM / YYYY",
272
+ onChange: onChangeInput,
273
+ tooltip: tooltip,
274
+ hintPosition: hintPosition,
275
+ label: ((_dictionary$copy = dictionary[copy]) === null || _dictionary$copy === void 0 ? void 0 : _dictionary$copy.roleDescription) ?? label,
276
+ value: inputText,
277
+ validation: validation,
278
+ children: /*#__PURE__*/_jsx(SingleDatePicker, {
206
279
  date: value,
207
280
  onDateChange: onChange,
208
281
  focused: isFocused,
209
282
  onFocusChange: onFocusChange,
210
283
  numberOfMonths: 1,
211
284
  hideKeyboardShortcutsPanel: true,
212
- keepOpenOnDateSelect: false,
285
+ keepOpenOnDateSelect: true,
213
286
  daySize: daySize,
287
+ ref: ref,
214
288
  renderNavPrevButton: renderPrevButton,
215
- renderNavNextButton: renderNextButton,
216
289
  isOutsideRange: isDayDisabled,
217
290
  phrases: getCopy(),
218
- renderMonthElement: _ref5 => {
291
+ id: id,
292
+ renderNavNextButton: renderNextButton,
293
+ renderMonthElement: _ref6 => {
219
294
  let {
220
295
  month
221
- } = _ref5;
296
+ } = _ref6;
222
297
  return /*#__PURE__*/_jsx(MonthCenterContainer, {
223
298
  children: /*#__PURE__*/_jsxs("div", {
224
299
  children: [dictionary[copy] ? dictionary[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
@@ -228,36 +303,6 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
228
303
  renderWeekHeaderElement: day => /*#__PURE__*/_jsx("div", {
229
304
  children: dictionary[copy] ? dictionary[copy].weekDays[day] : day
230
305
  })
231
- })]
232
- }) : /*#__PURE__*/_jsx(SingleDatePicker, {
233
- date: value,
234
- onDateChange: onChange,
235
- focused: isFocused,
236
- onFocusChange: onFocusChange,
237
- numberOfMonths: 1,
238
- hideKeyboardShortcutsPanel: true,
239
- keepOpenOnDateSelect: true,
240
- daySize: daySize,
241
- ref: ref,
242
- renderNavPrevButton: renderPrevButton,
243
- isOutsideRange: isDayDisabled,
244
- phrases: getCopy(),
245
- id: id,
246
- displayFormat: "DD / MM / YYYY",
247
- placeholder: "DD / MM / YYYY",
248
- renderNavNextButton: renderNextButton,
249
- renderMonthElement: _ref6 => {
250
- let {
251
- month
252
- } = _ref6;
253
- return /*#__PURE__*/_jsx(MonthCenterContainer, {
254
- children: /*#__PURE__*/_jsxs("div", {
255
- children: [dictionary[copy] ? dictionary[copy].months[month.month()] : month.format('MMMM'), ' ', month.year()]
256
- })
257
- });
258
- },
259
- renderWeekHeaderElement: day => /*#__PURE__*/_jsx("div", {
260
- children: dictionary[copy] ? dictionary[copy].weekDays[day] : day
261
306
  })
262
307
  })
263
308
  })
@@ -1,3 +1,3 @@
1
1
  import { css } from 'styled-components';
2
- const defaultReactDatesCss = /*#__PURE__*/css([".PresetDateRangePicker_panel{padding:0 22px 11px;}.PresetDateRangePicker_button{position:relative;height:100%;text-align:center;background:0 0;border:2px solid #00a699;color:#00a699;padding:4px 12px;margin-right:8px;font:inherit;font-weight:700;line-height:normal;overflow:visible;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;}.PresetDateRangePicker_button:active{outline:0;}.PresetDateRangePicker_button__selected{color:#fff;background:#00a699;}.SingleDatePickerInput{display:inline-block;background-color:#fff;}.SingleDatePickerInput__withBorder{border-radius:2px;border:1px solid #dbdbdb;}.SingleDatePickerInput__rtl{direction:rtl;}.SingleDatePickerInput__disabled{background-color:#f2f2f2;}.SingleDatePickerInput__block{display:block;}.SingleDatePickerInput__showClearDate{padding-right:30px;}.SingleDatePickerInput_clearDate{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;padding:10px;margin:0 10px 0 5px;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}.SingleDatePickerInput_clearDate__default:focus,.SingleDatePickerInput_clearDate__default:hover{background:#dbdbdb;border-radius:50%;}.SingleDatePickerInput_clearDate__small{padding:6px;}.SingleDatePickerInput_clearDate__hide{visibility:hidden;}.SingleDatePickerInput_clearDate_svg{fill:#82888a;height:12px;width:15px;vertical-align:middle;}.SingleDatePickerInput_clearDate_svg__small{height:9px;}.SingleDatePickerInput_calendarIcon{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;display:inline-block;vertical-align:middle;padding:10px;margin:0 5px 0 10px;}.SingleDatePickerInput_calendarIcon_svg{fill:#82888a;height:15px;width:14px;vertical-align:middle;}.SingleDatePicker{position:relative;display:inline-block;}.SingleDatePicker__block{display:block;}.SingleDatePicker_picker{z-index:1;background-color:#fff;position:absolute;}.SingleDatePicker_picker__rtl{direction:rtl;}.SingleDatePicker_picker__directionLeft{left:0;}.SingleDatePicker_picker__directionRight{right:0;}.SingleDatePicker_picker__portal{background-color:rgba(0,0,0,0.3);position:fixed;top:0;left:0;height:100%;width:100%;}.SingleDatePicker_picker__fullScreenPortal{background-color:#fff;}.SingleDatePicker_closeButton{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;position:absolute;top:0;right:0;padding:15px;z-index:2;}.SingleDatePicker_closeButton:focus,.SingleDatePicker_closeButton:hover{color:darken(#cacccd,10%);text-decoration:none;}.SingleDatePicker_closeButton_svg{height:15px;width:15px;fill:#cacccd;}.DayPickerKeyboardShortcuts_buttonReset{background:0 0;border:0;border-radius:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;cursor:pointer;font-size:14px;}.DayPickerKeyboardShortcuts_buttonReset:active{outline:0;}.DayPickerKeyboardShortcuts_show{width:33px;height:26px;position:absolute;z-index:2;}.DayPickerKeyboardShortcuts_show::before{content:'';display:block;position:absolute;}.DayPickerKeyboardShortcuts_show__bottomRight{bottom:0;right:0;}.DayPickerKeyboardShortcuts_show__bottomRight::before{border-top:26px solid transparent;border-right:33px solid #00a699;bottom:0;right:0;}.DayPickerKeyboardShortcuts_show__bottomRight:hover::before{border-right:33px solid #008489;}.DayPickerKeyboardShortcuts_show__topRight{top:0;right:0;}.DayPickerKeyboardShortcuts_show__topRight::before{border-bottom:26px solid transparent;border-right:33px solid #00a699;top:0;right:0;}.DayPickerKeyboardShortcuts_show__topRight:hover::before{border-right:33px solid #008489;}.DayPickerKeyboardShortcuts_show__topLeft{top:0;left:0;}.DayPickerKeyboardShortcuts_show__topLeft::before{border-bottom:26px solid transparent;border-left:33px solid #00a699;top:0;left:0;}.DayPickerKeyboardShortcuts_show__topLeft:hover::before{border-left:33px solid #008489;}.DayPickerKeyboardShortcuts_showSpan{color:#fff;position:absolute;}.DayPickerKeyboardShortcuts_showSpan__bottomRight{bottom:0;right:5px;}.DayPickerKeyboardShortcuts_showSpan__topRight{top:1px;right:5px;}.DayPickerKeyboardShortcuts_showSpan__topLeft{top:1px;left:5px;}.DayPickerKeyboardShortcuts_panel{overflow:auto;background:#fff;border:1px solid #dbdbdb;border-radius:2px;position:absolute;top:0;bottom:0;right:0;left:0;z-index:2;padding:22px;margin:33px;text-align:left;}.DayPickerKeyboardShortcuts_title{font-size:16px;font-weight:700;margin:0;}.DayPickerKeyboardShortcuts_list{list-style:none;padding:0;font-size:14px;}.DayPickerKeyboardShortcuts_close{position:absolute;right:22px;top:22px;z-index:2;}.DayPickerKeyboardShortcuts_close:active{outline:0;}.DayPickerKeyboardShortcuts_closeSvg{height:15px;width:15px;fill:#cacccd;}.DayPickerKeyboardShortcuts_closeSvg:focus,.DayPickerKeyboardShortcuts_closeSvg:hover{fill:#82888a;}.CalendarDay{-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;font-size:14px;text-align:center;}.CalendarDay:active{outline:0;}.CalendarDay__defaultCursor{cursor:default;}.CalendarDay__default{border:1px solid #e4e7e7;color:#484848;background:#fff;}.CalendarDay__default:hover{background:#e4e7e7;border:1px solid #e4e7e7;color:inherit;}.CalendarDay__hovered_offset{background:#f4f5f5;border:1px double #e4e7e7;color:inherit;}.CalendarDay__outside{border:0;background:#fff;color:#484848;}.CalendarDay__outside:hover{border:0;}.CalendarDay__blocked_minimum_nights{background:#fff;border:1px solid #eceeee;color:#cacccd;}.CalendarDay__blocked_minimum_nights:active,.CalendarDay__blocked_minimum_nights:hover{background:#fff;color:#cacccd;}.CalendarDay__highlighted_calendar{background:#ffe8bc;color:#484848;}.CalendarDay__highlighted_calendar:active,.CalendarDay__highlighted_calendar:hover{background:#ffce71;color:#484848;}.CalendarDay__selected_span{background:#66e2da;border:1px double #33dacd;color:#fff;}.CalendarDay__selected_span:active,.CalendarDay__selected_span:hover{background:#33dacd;border:1px double #33dacd;color:#fff;}.CalendarDay__selected,.CalendarDay__selected:active,.CalendarDay__selected:hover{background:#00a699;border:1px double #00a699;color:#fff;}.CalendarDay__hovered_span,.CalendarDay__hovered_span:hover{background:#b2f1ec;border:1px double #80e8e0;color:#007a87;}.CalendarDay__hovered_span:active{background:#80e8e0;border:1px double #80e8e0;color:#007a87;}.CalendarDay__blocked_calendar,.CalendarDay__blocked_calendar:active,.CalendarDay__blocked_calendar:hover{background:#cacccd;border:1px solid #cacccd;color:#82888a;}.CalendarDay__blocked_out_of_range,.CalendarDay__blocked_out_of_range:active,.CalendarDay__blocked_out_of_range:hover{background:#fff;border:1px solid #e4e7e7;color:#cacccd;}.CalendarDay__hovered_start_first_possible_end{background:#eceeee;border:1px double #eceeee;}.CalendarDay__hovered_start_blocked_min_nights{background:#eceeee;border:1px double #e4e7e7;}.CalendarMonth{background:#fff;text-align:center;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.CalendarMonth_table{border-collapse:collapse;border-spacing:0;}.CalendarMonth_verticalSpacing{border-collapse:separate;}.CalendarMonth_caption{color:#484848;font-size:18px;text-align:center;padding-top:22px;padding-bottom:37px;caption-side:initial;}.CalendarMonth_caption__verticalScrollable{padding-top:12px;padding-bottom:7px;}.CalendarMonthGrid{background:#fff;text-align:left;z-index:0;}.CalendarMonthGrid__animating{z-index:1;}.CalendarMonthGrid__horizontal{position:absolute;left:9px;}.CalendarMonthGrid__vertical,.CalendarMonthGrid__vertical_scrollable{margin:0 auto;}.CalendarMonthGrid_month__horizontal{display:inline-block;vertical-align:top;min-height:100%;}.CalendarMonthGrid_month__hideForAnimation{position:absolute;z-index:-1;opacity:0;pointer-events:none;}.CalendarMonthGrid_month__hidden{visibility:hidden;}.DayPickerNavigation{position:relative;z-index:2;}.DayPickerNavigation__horizontal{height:0;}.DayPickerNavigation__verticalScrollable_prevNav{z-index:1;}.DayPickerNavigation__verticalDefault{position:absolute;width:100%;height:52px;bottom:0;left:0;}.DayPickerNavigation__verticalScrollableDefault{position:relative;}.DayPickerNavigation__bottom{height:auto;}.DayPickerNavigation__bottomDefault{-webkit-box-pack:justify;-ms-flex-pack:justify;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;}.DayPickerNavigation_button{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:0;padding:0;margin:0;}.DayPickerNavigation_button__default{border:1px solid #e4e7e7;background-color:#fff;color:#757575;}.DayPickerNavigation_button__default:focus,.DayPickerNavigation_button__default:hover{border:1px solid #c4c4c4;}.DayPickerNavigation_button__default:active{background:#f2f2f2;}.DayPickerNavigation_button__disabled{cursor:default;border:1px solid #f2f2f2;}.DayPickerNavigation_button__disabled:focus,.DayPickerNavigation_button__disabled:hover{border:1px solid #f2f2f2;}.DayPickerNavigation_button__disabled:active{background:0 0;}.DayPickerNavigation_button__horizontalDefault{position:absolute;top:18px;line-height:0.78;border-radius:3px;padding:6px 9px;}.DayPickerNavigation_bottomButton__horizontalDefault{position:static;margin:-10px 22px 30px;}.DayPickerNavigation_leftButton__horizontalDefault{left:22px;}.DayPickerNavigation_rightButton__horizontalDefault{right:22px;}.DayPickerNavigation_button__verticalDefault{padding:5px;background:#fff;box-shadow:0 0 5px 2px rgba(0,0,0,0.1);position:relative;display:inline-block;text-align:center;height:100%;width:50%;}.DayPickerNavigation_nextButton__verticalDefault{border-left:0;}.DayPickerNavigation_nextButton__verticalScrollableDefault,.DayPickerNavigation_prevButton__verticalScrollableDefault{width:100%;}.DayPickerNavigation_svg__horizontal{height:19px;width:19px;fill:#82888a;display:block;}.DayPickerNavigation_svg__vertical{height:42px;width:42px;fill:#484848;}.DayPickerNavigation_svg__disabled{fill:#f2f2f2;}.DayPicker{background:#fff;position:relative;text-align:left;}.DayPicker__horizontal{background:#fff;}.DayPicker__verticalScrollable{height:100%;}.DayPicker__hidden{visibility:hidden;}.DayPicker__withBorder{box-shadow:0 2px 6px rgba(0,0,0,0.05),0 0 0 1px rgba(0,0,0,0.07);border-radius:3px;}.DayPicker_portal__horizontal{box-shadow:none;position:absolute;left:50%;top:50%;}.DayPicker_portal__vertical{position:initial;}.DayPicker_focusRegion{outline:0;}.DayPicker_calendarInfo__horizontal,.DayPicker_wrapper__horizontal{display:inline-block;vertical-align:top;}.DayPicker_weekHeaders{position:relative;}.DayPicker_weekHeaders__horizontal{margin-left:9px;}.DayPicker_weekHeader{color:#757575;position:absolute;top:62px;z-index:2;text-align:left;}.DayPicker_weekHeader__vertical{left:50%;}.DayPicker_weekHeader__verticalScrollable{top:0;display:table-row;border-bottom:1px solid #dbdbdb;background:#fff;margin-left:0;left:0;width:100%;text-align:center;}.DayPicker_weekHeader_ul{list-style:none;margin:1px 0;padding-left:0;padding-right:0;font-size:14px;}.DayPicker_weekHeader_li{display:inline-block;text-align:center;}.DayPicker_transitionContainer{position:relative;overflow:hidden;border-radius:3px;}.DayPicker_transitionContainer__horizontal{-webkit-transition:height 0.2s ease-in-out;-moz-transition:height 0.2s ease-in-out;transition:height 0.2s ease-in-out;}.DayPicker_transitionContainer__vertical{width:100%;}.DayPicker_transitionContainer__verticalScrollable{padding-top:20px;height:100%;position:absolute;top:0;bottom:0;right:0;left:0;overflow-y:scroll;}.DateInput{margin:0;padding:0;background:#fff;position:relative;display:inline-block;width:130px;vertical-align:middle;}.DateInput__small{width:97px;}.DateInput__block{width:100%;}.DateInput__disabled{background:#f2f2f2;color:#dbdbdb;}.DateInput_input{font-weight:200;font-size:19px;line-height:24px;color:#484848;background-color:#fff;width:100%;padding:11px 11px 9px;border:0;border-top:0;border-right:0;border-bottom:2px solid transparent;border-left:0;border-radius:0;}.DateInput_input__small{font-size:15px;line-height:18px;letter-spacing:0.2px;padding:7px 7px 5px;}.DateInput_input__regular{font-weight:auto;}.DateInput_input__readOnly{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.DateInput_input__focused{outline:0;background:#fff;border:0;border-top:0;border-right:0;border-bottom:2px solid #008489;border-left:0;}.DateInput_input__disabled{background:#f2f2f2;font-style:italic;}.DateInput_screenReaderMessage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.DateInput_fang{position:absolute;width:20px;height:10px;left:22px;z-index:2;}.DateInput_fangShape{fill:#fff;}.DateInput_fangStroke{stroke:#dbdbdb;fill:transparent;}.DateRangePickerInput{background-color:#fff;display:inline-block;}.DateRangePickerInput__disabled{background:#f2f2f2;}.DateRangePickerInput__withBorder{border-radius:2px;border:1px solid #dbdbdb;}.DateRangePickerInput__rtl{direction:rtl;}.DateRangePickerInput__block{display:block;}.DateRangePickerInput__showClearDates{padding-right:30px;}.DateRangePickerInput_arrow{display:inline-block;vertical-align:middle;color:#484848;}.DateRangePickerInput_arrow_svg{vertical-align:middle;fill:#484848;height:24px;width:24px;}.DateRangePickerInput_clearDates{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;padding:10px;margin:0 10px 0 5px;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}.DateRangePickerInput_clearDates__small{padding:6px;}.DateRangePickerInput_clearDates_default:focus,.DateRangePickerInput_clearDates_default:hover{background:#dbdbdb;border-radius:50%;}.DateRangePickerInput_clearDates__hide{visibility:hidden;}.DateRangePickerInput_clearDates_svg{fill:#82888a;height:12px;width:15px;vertical-align:middle;}.DateRangePickerInput_clearDates_svg__small{height:9px;}.DateRangePickerInput_calendarIcon{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;display:inline-block;vertical-align:middle;padding:10px;margin:0 5px 0 10px;}.DateRangePickerInput_calendarIcon_svg{fill:#82888a;height:15px;width:14px;vertical-align:middle;}.DateRangePicker{position:relative;display:inline-block;}.DateRangePicker__block{display:block;}.DateRangePicker_picker{z-index:1;background-color:#fff;position:absolute;}.DateRangePicker_picker__rtl{direction:rtl;}.DateRangePicker_picker__directionLeft{left:0;}.DateRangePicker_picker__directionRight{right:0;}.DateRangePicker_picker__portal{background-color:rgba(0,0,0,0.3);position:fixed;top:0;left:0;height:100%;width:100%;}.DateRangePicker_picker__fullScreenPortal{background-color:#fff;}.DateRangePicker_closeButton{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;position:absolute;top:0;right:0;padding:15px;z-index:2;}.DateRangePicker_closeButton:focus,.DateRangePicker_closeButton:hover{color:darken(#cacccd,10%);text-decoration:none;}.DateRangePicker_closeButton_svg{height:15px;width:15px;fill:#cacccd;}"]);
2
+ const defaultReactDatesCss = /*#__PURE__*/css([".PresetDateRangePicker_panel{padding:0 22px 11px;}.PresetDateRangePicker_button{position:relative;height:100%;text-align:center;background:0 0;border:2px solid #00a699;color:#00a699;padding:4px 12px;margin-right:8px;font:inherit;font-weight:700;line-height:normal;overflow:visible;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;}.PresetDateRangePicker_button:active{outline:0;}.PresetDateRangePicker_button__selected{color:#fff;background:#00a699;}.SingleDatePickerInput{display:inline-block;background-color:#fff;position:absolute;top:-55px;}.SingleDatePickerInput__disabled{background-color:#f2f2f2;}.SingleDatePickerInput__block{display:block;}.SingleDatePickerInput__showClearDate{padding-right:30px;}.SingleDatePickerInput_clearDate{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;padding:10px;margin:0 10px 0 5px;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}.SingleDatePickerInput_clearDate__default:focus,.SingleDatePickerInput_clearDate__default:hover{background:#dbdbdb;border-radius:50%;}.SingleDatePickerInput_clearDate__small{padding:6px;}.SingleDatePickerInput_clearDate__hide{visibility:hidden;}.SingleDatePickerInput_clearDate_svg{fill:#82888a;height:12px;width:15px;vertical-align:middle;}.SingleDatePickerInput_clearDate_svg__small{height:9px;}.SingleDatePickerInput_calendarIcon{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;display:inline-block;vertical-align:middle;padding:10px;margin:0 5px 0 10px;}.SingleDatePickerInput_calendarIcon_svg{fill:#82888a;height:15px;width:14px;vertical-align:middle;}.SingleDatePicker{position:relative;display:inline-block;}.SingleDatePicker__block{display:block;}.SingleDatePicker_picker{z-index:1;background-color:#fff;position:absolute;}.SingleDatePicker_picker__rtl{direction:rtl;}.SingleDatePicker_picker__directionLeft{left:0;}.SingleDatePicker_picker__directionRight{right:0;}.SingleDatePicker_picker__portal{background-color:rgba(0,0,0,0.3);position:fixed;top:0;left:0;height:100%;width:100%;}.SingleDatePicker_picker__fullScreenPortal{background-color:#fff;}.SingleDatePicker_closeButton{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;position:absolute;top:0;right:0;padding:15px;z-index:2;}.SingleDatePicker_closeButton:focus,.SingleDatePicker_closeButton:hover{color:darken(#cacccd,10%);text-decoration:none;}.SingleDatePicker_closeButton_svg{height:15px;width:15px;fill:#cacccd;}.DayPickerKeyboardShortcuts_buttonReset{background:0 0;border:0;border-radius:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;cursor:pointer;font-size:14px;}.DayPickerKeyboardShortcuts_buttonReset:active{outline:0;}.DayPickerKeyboardShortcuts_show{width:33px;height:26px;position:absolute;z-index:2;}.DayPickerKeyboardShortcuts_show::before{content:'';display:block;position:absolute;}.DayPickerKeyboardShortcuts_show__bottomRight{bottom:0;right:0;}.DayPickerKeyboardShortcuts_show__bottomRight::before{border-top:26px solid transparent;border-right:33px solid #00a699;bottom:0;right:0;}.DayPickerKeyboardShortcuts_show__bottomRight:hover::before{border-right:33px solid #008489;}.DayPickerKeyboardShortcuts_show__topRight{top:0;right:0;}.DayPickerKeyboardShortcuts_show__topRight::before{border-bottom:26px solid transparent;border-right:33px solid #00a699;top:0;right:0;}.DayPickerKeyboardShortcuts_show__topRight:hover::before{border-right:33px solid #008489;}.DayPickerKeyboardShortcuts_show__topLeft{top:0;left:0;}.DayPickerKeyboardShortcuts_show__topLeft::before{border-bottom:26px solid transparent;border-left:33px solid #00a699;top:0;left:0;}.DayPickerKeyboardShortcuts_show__topLeft:hover::before{border-left:33px solid #008489;}.DayPickerKeyboardShortcuts_showSpan{color:#fff;position:absolute;}.DayPickerKeyboardShortcuts_showSpan__bottomRight{bottom:0;right:5px;}.DayPickerKeyboardShortcuts_showSpan__topRight{top:1px;right:5px;}.DayPickerKeyboardShortcuts_showSpan__topLeft{top:1px;left:5px;}.DayPickerKeyboardShortcuts_panel{overflow:auto;background:#fff;border:1px solid #dbdbdb;border-radius:2px;position:absolute;top:0;bottom:0;right:0;left:0;z-index:2;padding:22px;margin:33px;text-align:left;}.DayPickerKeyboardShortcuts_title{font-size:16px;font-weight:700;margin:0;}.DayPickerKeyboardShortcuts_list{list-style:none;padding:0;font-size:14px;}.DayPickerKeyboardShortcuts_close{position:absolute;right:22px;top:22px;z-index:2;}.DayPickerKeyboardShortcuts_close:active{outline:0;}.DayPickerKeyboardShortcuts_closeSvg{height:15px;width:15px;fill:#cacccd;}.DayPickerKeyboardShortcuts_closeSvg:focus,.DayPickerKeyboardShortcuts_closeSvg:hover{fill:#82888a;}.CalendarDay{-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;font-size:14px;text-align:center;}.CalendarDay:active{outline:0;}.CalendarDay__defaultCursor{cursor:default;}.CalendarDay__default{border:1px solid #e4e7e7;color:#484848;background:#fff;}.CalendarDay__default:hover{background:#e4e7e7;border:1px solid #e4e7e7;color:inherit;}.CalendarDay__hovered_offset{background:#f4f5f5;border:1px double #e4e7e7;color:inherit;}.CalendarDay__outside{border:0;background:#fff;color:#484848;}.CalendarDay__outside:hover{border:0;}.CalendarDay__blocked_minimum_nights{background:#fff;border:1px solid #eceeee;color:#cacccd;}.CalendarDay__blocked_minimum_nights:active,.CalendarDay__blocked_minimum_nights:hover{background:#fff;color:#cacccd;}.CalendarDay__highlighted_calendar{background:#ffe8bc;color:#484848;}.CalendarDay__highlighted_calendar:active,.CalendarDay__highlighted_calendar:hover{background:#ffce71;color:#484848;}.CalendarDay__selected_span{background:#66e2da;border:1px double #33dacd;color:#fff;}.CalendarDay__selected_span:active,.CalendarDay__selected_span:hover{background:#33dacd;border:1px double #33dacd;color:#fff;}.CalendarDay__selected,.CalendarDay__selected:active,.CalendarDay__selected:hover{background:#00a699;border:1px double #00a699;color:#fff;}.CalendarDay__hovered_span,.CalendarDay__hovered_span:hover{background:#b2f1ec;border:1px double #80e8e0;color:#007a87;}.CalendarDay__hovered_span:active{background:#80e8e0;border:1px double #80e8e0;color:#007a87;}.CalendarDay__blocked_calendar,.CalendarDay__blocked_calendar:active,.CalendarDay__blocked_calendar:hover{background:#cacccd;border:1px solid #cacccd;color:#82888a;}.CalendarDay__blocked_out_of_range,.CalendarDay__blocked_out_of_range:active,.CalendarDay__blocked_out_of_range:hover{background:#fff;border:1px solid #e4e7e7;color:#cacccd;}.CalendarDay__hovered_start_first_possible_end{background:#eceeee;border:1px double #eceeee;}.CalendarDay__hovered_start_blocked_min_nights{background:#eceeee;border:1px double #e4e7e7;}.CalendarMonth{background:#fff;text-align:center;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.CalendarMonth_table{border-collapse:collapse;border-spacing:0;}.CalendarMonth_verticalSpacing{border-collapse:separate;}.CalendarMonth_caption{color:#484848;font-size:18px;text-align:center;padding-top:22px;padding-bottom:37px;caption-side:initial;}.CalendarMonth_caption__verticalScrollable{padding-top:12px;padding-bottom:7px;}.CalendarMonthGrid{background:#fff;text-align:left;z-index:0;}.CalendarMonthGrid__animating{z-index:1;}.CalendarMonthGrid__horizontal{position:absolute;left:9px;}.CalendarMonthGrid__vertical,.CalendarMonthGrid__vertical_scrollable{margin:0 auto;}.CalendarMonthGrid_month__horizontal{display:inline-block;vertical-align:top;min-height:100%;}.CalendarMonthGrid_month__hideForAnimation{position:absolute;z-index:-1;opacity:0;pointer-events:none;}.CalendarMonthGrid_month__hidden{visibility:hidden;}.DayPickerNavigation{position:relative;z-index:2;}.DayPickerNavigation__horizontal{height:0;}.DayPickerNavigation__verticalScrollable_prevNav{z-index:1;}.DayPickerNavigation__verticalDefault{position:absolute;width:100%;height:52px;bottom:0;left:0;}.DayPickerNavigation__verticalScrollableDefault{position:relative;}.DayPickerNavigation__bottom{height:auto;}.DayPickerNavigation__bottomDefault{-webkit-box-pack:justify;-ms-flex-pack:justify;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;}.DayPickerNavigation_button{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:0;padding:0;margin:0;}.DayPickerNavigation_button__default{border:1px solid #e4e7e7;background-color:#fff;color:#757575;}.DayPickerNavigation_button__default:focus,.DayPickerNavigation_button__default:hover{border:1px solid #c4c4c4;}.DayPickerNavigation_button__default:active{background:#f2f2f2;}.DayPickerNavigation_button__disabled{cursor:default;border:1px solid #f2f2f2;}.DayPickerNavigation_button__disabled:focus,.DayPickerNavigation_button__disabled:hover{border:1px solid #f2f2f2;}.DayPickerNavigation_button__disabled:active{background:0 0;}.DayPickerNavigation_button__horizontalDefault{position:absolute;top:18px;line-height:0.78;border-radius:3px;padding:6px 9px;}.DayPickerNavigation_bottomButton__horizontalDefault{position:static;margin:-10px 22px 30px;}.DayPickerNavigation_leftButton__horizontalDefault{left:22px;}.DayPickerNavigation_rightButton__horizontalDefault{right:22px;}.DayPickerNavigation_button__verticalDefault{padding:5px;background:#fff;box-shadow:0 0 5px 2px rgba(0,0,0,0.1);position:relative;display:inline-block;text-align:center;height:100%;width:50%;}.DayPickerNavigation_nextButton__verticalDefault{border-left:0;}.DayPickerNavigation_nextButton__verticalScrollableDefault,.DayPickerNavigation_prevButton__verticalScrollableDefault{width:100%;}.DayPickerNavigation_svg__horizontal{height:19px;width:19px;fill:#82888a;display:block;}.DayPickerNavigation_svg__vertical{height:42px;width:42px;fill:#484848;}.DayPickerNavigation_svg__disabled{fill:#f2f2f2;}.DayPicker{background:#fff;position:relative;text-align:left;}.DayPicker__horizontal{background:#fff;}.DayPicker__verticalScrollable{height:100%;}.DayPicker__hidden{visibility:hidden;}.DayPicker__withBorder{box-shadow:0 2px 6px rgba(0,0,0,0.05),0 0 0 1px rgba(0,0,0,0.07);border-radius:3px;}.DayPicker_portal__horizontal{box-shadow:none;position:absolute;left:50%;top:50%;}.DayPicker_portal__vertical{position:initial;}.DayPicker_focusRegion{outline:0;}.DayPicker_calendarInfo__horizontal,.DayPicker_wrapper__horizontal{display:inline-block;vertical-align:top;}.DayPicker_weekHeaders{position:relative;}.DayPicker_weekHeaders__horizontal{margin-left:9px;}.DayPicker_weekHeader{color:#757575;position:absolute;top:62px;z-index:2;text-align:left;}.DayPicker_weekHeader__vertical{left:50%;}.DayPicker_weekHeader__verticalScrollable{top:0;display:table-row;border-bottom:1px solid #dbdbdb;background:#fff;margin-left:0;left:0;width:100%;text-align:center;}.DayPicker_weekHeader_ul{list-style:none;margin:1px 0;padding-left:0;padding-right:0;font-size:14px;}.DayPicker_weekHeader_li{display:inline-block;text-align:center;}.DayPicker_transitionContainer{position:relative;overflow:hidden;border-radius:3px;}.DayPicker_transitionContainer__horizontal{-webkit-transition:height 0.2s ease-in-out;-moz-transition:height 0.2s ease-in-out;transition:height 0.2s ease-in-out;}.DayPicker_transitionContainer__vertical{width:100%;}.DayPicker_transitionContainer__verticalScrollable{padding-top:20px;height:100%;position:absolute;top:0;bottom:0;right:0;left:0;overflow-y:scroll;}.DateInput_input{display:none;}.DateInput_screenReaderMessage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.DateInput_fang{position:absolute;top:55px;width:20px;height:10px;left:22px;z-index:2;}.DateInput_fangShape{fill:#fff;}.DateInput_fangStroke{stroke:#dbdbdb;fill:transparent;}.DateRangePickerInput{background-color:#fff;display:inline-block;}.DateRangePickerInput__disabled{background:#f2f2f2;}.DateRangePickerInput__withBorder{border-radius:2px;border:1px solid #dbdbdb;}.DateRangePickerInput__rtl{direction:rtl;}.DateRangePickerInput__block{display:block;}.DateRangePickerInput__showClearDates{padding-right:30px;}.DateRangePickerInput_arrow{display:inline-block;vertical-align:middle;color:#484848;}.DateRangePickerInput_arrow_svg{vertical-align:middle;fill:#484848;height:24px;width:24px;}.DateRangePickerInput_clearDates{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;padding:10px;margin:0 10px 0 5px;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}.DateRangePickerInput_clearDates__small{padding:6px;}.DateRangePickerInput_clearDates_default:focus,.DateRangePickerInput_clearDates_default:hover{background:#dbdbdb;border-radius:50%;}.DateRangePickerInput_clearDates__hide{visibility:hidden;}.DateRangePickerInput_clearDates_svg{fill:#82888a;height:12px;width:15px;vertical-align:middle;}.DateRangePickerInput_clearDates_svg__small{height:9px;}.DateRangePickerInput_calendarIcon{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;display:inline-block;vertical-align:middle;padding:10px;margin:0 5px 0 10px;}.DateRangePickerInput_calendarIcon_svg{fill:#82888a;height:15px;width:14px;vertical-align:middle;}.DateRangePicker{position:relative;display:inline-block;}.DateRangePicker__block{display:block;}.DateRangePicker_picker{z-index:1;background-color:#fff;position:absolute;}.DateRangePicker_picker__rtl{direction:rtl;}.DateRangePicker_picker__directionLeft{left:0;}.DateRangePicker_picker__directionRight{right:0;}.DateRangePicker_picker__portal{background-color:rgba(0,0,0,0.3);position:fixed;top:0;left:0;height:100%;width:100%;}.DateRangePicker_picker__fullScreenPortal{background-color:#fff;}.DateRangePicker_closeButton{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;cursor:pointer;position:absolute;top:0;right:0;padding:15px;z-index:2;}.DateRangePicker_closeButton:focus,.DateRangePicker_closeButton:hover{color:darken(#cacccd,10%);text-decoration:none;}.DateRangePicker_closeButton_svg{height:15px;width:15px;fill:#cacccd;}"]);
3
3
  export default defaultReactDatesCss;
@@ -120,8 +120,7 @@ const StoryCard = /*#__PURE__*/forwardRef((_ref3, ref) => {
120
120
  },
121
121
  children: [Boolean(tag) && /*#__PURE__*/_jsx(Typography, {
122
122
  variant: {
123
- size: 'eyebrow',
124
- colour: 'secondary'
123
+ size: 'eyebrow'
125
124
  },
126
125
  children: tag
127
126
  }), Boolean(date) &&
@@ -130,8 +129,7 @@ const StoryCard = /*#__PURE__*/forwardRef((_ref3, ref) => {
130
129
  // Get locale based on decision of https://github.com/telus/universal-design-system/issues/715
131
130
  _jsx(Typography, {
132
131
  variant: {
133
- size: 'small',
134
- colour: 'secondary'
132
+ size: 'small'
135
133
  },
136
134
  children: date
137
135
  })]
@@ -145,8 +143,7 @@ const StoryCard = /*#__PURE__*/forwardRef((_ref3, ref) => {
145
143
  space: 3
146
144
  }), /*#__PURE__*/_jsx(Typography, {
147
145
  variant: {
148
- size: 'h3',
149
- colour: 'secondary'
146
+ size: 'h3'
150
147
  },
151
148
  children: title
152
149
  }), /*#__PURE__*/_jsx(Spacer, {
@@ -133,7 +133,7 @@ export const VideoProps = { ...selectedSystemPropTypes,
133
133
  /**
134
134
  * The splash screen UI's language as an ISO language code. It currently supports English and French.
135
135
  */
136
- copy: PropTypes.oneOf(['en', 'fr']).isRequired,
136
+ copy: PropTypes.oneOf(['en', 'fr']),
137
137
 
138
138
  /**
139
139
  * A function to be run when the play button is pressed on the video splash screen and the video is ready to play.
package/package.json CHANGED
@@ -5,17 +5,18 @@
5
5
  ],
6
6
  "dependencies": {
7
7
  "@gorhom/portal": "^1.0.14",
8
- "@telus-uds/components-base": "1.49.0",
8
+ "@telus-uds/components-base": "1.50.0",
9
9
  "@telus-uds/system-constants": "^1.2.1",
10
10
  "fscreen": "^1.2.0",
11
11
  "lodash.omit": "^4.5.0",
12
12
  "react-dates": "^21.8.0",
13
13
  "react-helmet-async": "^1.3.0",
14
14
  "react-moment-proptypes": "^1.8.1",
15
- "@telus-uds/system-theme-tokens": "^2.31.0",
15
+ "@telus-uds/system-theme-tokens": "^2.32.0",
16
16
  "prop-types": "^15.7.2",
17
17
  "lodash.throttle": "^4.1.1",
18
- "react-youtube": "^10.1.0"
18
+ "react-youtube": "^10.1.0",
19
+ "moment": "2.29.4"
19
20
  },
20
21
  "description": "UDS mult-brand web components",
21
22
  "devDependencies": {
@@ -62,5 +63,5 @@
62
63
  "skip": true
63
64
  },
64
65
  "types": "types/index.d.ts",
65
- "version": "2.7.0"
66
+ "version": "2.8.0"
66
67
  }
@@ -7,7 +7,6 @@ import defaultReactDatesCss from './reactDatesCss'
7
7
  const CalendarContainer = styled.div(
8
8
  ({
9
9
  daySize,
10
- validation,
11
10
  remainingTokens,
12
11
  calendarMonthFontTokens,
13
12
  calendarDayDefaultHeight,
@@ -35,31 +34,10 @@ const CalendarContainer = styled.div(
35
34
  }
36
35
  .DateInput {
37
36
  width: 100%;
38
- border: 2px solid ${remainingTokens.dateInputBorderColor};
39
- ${validation === 'error' && `input { border-color: ${remainingTokens.invalidInputMixin}; }`};
40
- ${validation === 'success' && `input { border-color: ${remainingTokens.validInputMixin}; }`};
41
- }
42
- .DateInput:hover {
43
- border-radius: ${remainingTokens.dateInputBorderRadius}px;
44
- border: 2px solid ${remainingTokens.dateInputHoverBorderColor};
45
- }
46
- .DateInput_input:focus {
47
- border: 3px solid ${remainingTokens.dateInputFocusBorderColor};
48
37
  }
49
38
  .SingleDatePickerInput__withBorder {
50
39
  border: 0 !important;
51
40
  }
52
- .DateInput_input {
53
- box-sizing: border-box;
54
- padding: 1rem;
55
- border: 1px solid ${remainingTokens.dateInputInsideBorderColor};
56
- border-radius: 4px;
57
- min-height: 3.25rem;
58
- color: ${remainingTokens.dateInputInsideColor};
59
- font-weight: 400;
60
- font-size: 1rem;
61
- box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05);
62
- }
63
41
  .DateInput_fang {
64
42
  transform: translateY(2px);
65
43
  z-index: 4;
@@ -166,10 +144,8 @@ const CalendarContainer = styled.div(
166
144
  }
167
145
  .CalendarDay__selected,
168
146
  .CalendarDay__selected:active,
169
- .CalendarDay__selected:hover
170
147
  .CalendarDay__default.CalendarDay__selected,
171
- .CalendarDay__default.CalendarDay__selected:active
172
- .CalendarDay__default.CalendarDay__selected:hover{
148
+ .CalendarDay__default.CalendarDay__selected:active{
173
149
  background: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverBackground};
174
150
  border: 1px solid ${remainingTokens.calendarDaySelectedHoverBorderColor};
175
151
  color: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverColor};
@@ -179,6 +155,15 @@ const CalendarContainer = styled.div(
179
155
  background: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverBeforeBackground};
180
156
  }
181
157
  }
158
+
159
+
160
+ .CalendarDay__selected:hover
161
+ .CalendarDay__default.CalendarDay__selected:hover{
162
+ &:before {
163
+ background: ${remainingTokens.calendarDayDefaultCalendarDaySelectedHoverBeforeBackground};
164
+ }
165
+ }
166
+
182
167
  .CalendarDay__blocked_out_of_range,
183
168
  .CalendarDay__blocked_out_of_range:active,
184
169
  .CalendarDay__blocked_out_of_range:hover,
@@ -7,19 +7,21 @@ import SingleDatePicker from 'react-dates/lib/components/SingleDatePicker'
7
7
  import DayPickerSingleDateController from 'react-dates/lib/components/DayPickerSingleDateController'
8
8
  import {
9
9
  IconButton,
10
- InputSupports,
10
+ TextInput,
11
11
  selectSystemProps,
12
12
  useCopy,
13
13
  useViewport,
14
14
  useThemeTokens,
15
15
  applyTextStyles
16
16
  } from '@telus-uds/components-base'
17
+ import moment from 'moment'
17
18
  import CalendarContainer from './CalendarContainer'
18
19
  import dictionary from './dictionary'
19
20
  import { htmlAttrs } from '../utils'
20
21
 
21
22
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs])
22
-
23
+ const dateFormat = 'DD / MM / YYYY'
24
+ const dateFormatWithoutSpaces = 'DD/MM/YYYY'
23
25
  const getResponsiveDaySize = (inline = false, viewport = 'md') => {
24
26
  let responsiveDaySize
25
27
  if (viewport === 'xs') {
@@ -46,6 +48,11 @@ const MonthCenterContainer = styled.div({
46
48
  justifyContent: 'center'
47
49
  })
48
50
 
51
+ const DateInputWrapper = styled.div({
52
+ display: 'flex',
53
+ flexDirection: 'column'
54
+ })
55
+
49
56
  /**
50
57
  * Use DatePicker to select a date on a calendar.
51
58
  *
@@ -90,15 +97,40 @@ const DatePicker = forwardRef(
90
97
  ) => {
91
98
  const [inputDate, setInputDate] = useState(date)
92
99
  const [isFocused, setIsFocused] = useState(false)
93
-
100
+ const [inputText, setInputText] = useState(moment(date, dateFormat, true).isValid() ? date : '')
101
+ const [isClickedInside, setIsClickedInside] = useState(false)
94
102
  const getCopy = useCopy({ dictionary, copy })
95
103
  const onFocusChange = ({ focused }) => {
96
- setIsFocused(focused)
104
+ if (!isClickedInside) {
105
+ setIsFocused(focused)
106
+ }
107
+ setIsClickedInside(false)
108
+ }
109
+ const handleFocus = () => {
110
+ setIsFocused(true)
111
+ }
112
+ const handleMouseDown = (event) => {
113
+ if (event.target.tagName === 'INPUT') {
114
+ setIsClickedInside(true)
115
+ setIsFocused(true)
116
+ } else {
117
+ event.stopPropagation()
118
+ }
97
119
  }
98
120
  const onChange = (value) => {
99
121
  setInputDate(value)
122
+ setInputText(value.format(dateFormat))
100
123
  if (onDateChange) onDateChange(value)
101
124
  }
125
+ const onChangeInput = (value) => {
126
+ if (moment(value.replace(/\s/g, ''), dateFormatWithoutSpaces, true).isValid()) {
127
+ setInputDate(moment(value, dateFormat))
128
+ if (onDateChange) onDateChange(moment(value, dateFormat))
129
+ setInputText(moment(value, dateFormatWithoutSpaces).format(dateFormat))
130
+ } else {
131
+ setInputText(value)
132
+ }
133
+ }
102
134
  const viewport = useViewport()
103
135
  const daySize = getResponsiveDaySize(inline, viewport)
104
136
  const circleSize = getResponsiveCircleSize(inline, viewport)
@@ -164,76 +196,33 @@ const DatePicker = forwardRef(
164
196
  calendarWeekFontTokens={calendarWeekFontTokens}
165
197
  defaultFontTokens={defaultFontTokens}
166
198
  >
167
- <InputSupports
168
- copy={copy}
169
- feedback={feedback}
170
- hint={hint}
171
- hintPosition={hintPosition}
172
- label={dictionary[copy]?.roleDescription ?? label}
173
- nativeID={id}
174
- tooltip={tooltip}
175
- validation={validation}
176
- >
177
- {inline ? (
178
- <>
179
- <HiddenInputFieldContainer
180
- height={hiddenInputFieldContainerHeight}
181
- width={hiddenInputFieldContainerWidth}
182
- >
183
- <input
184
- ref={ref}
185
- id={id}
186
- type="text"
187
- value={value?.format('YYYY-MM-DD') ?? ''}
188
- readOnly
189
- />
190
- </HiddenInputFieldContainer>
191
- <DayPickerSingleDateController
192
- date={value}
193
- onDateChange={onChange}
194
- focused={isFocused}
195
- onFocusChange={onFocusChange}
196
- numberOfMonths={1}
197
- hideKeyboardShortcutsPanel={true}
198
- keepOpenOnDateSelect={false}
199
- daySize={daySize}
200
- renderNavPrevButton={renderPrevButton}
201
- renderNavNextButton={renderNextButton}
202
- isOutsideRange={isDayDisabled}
203
- phrases={getCopy()}
204
- renderMonthElement={({ month }) => (
205
- <MonthCenterContainer>
206
- <div>
207
- {dictionary[copy]
208
- ? dictionary[copy].months[month.month()]
209
- : month.format('MMMM')}{' '}
210
- {month.year()}
211
- </div>
212
- </MonthCenterContainer>
213
- )}
214
- renderWeekHeaderElement={(day) => (
215
- <div>{dictionary[copy] ? dictionary[copy].weekDays[day] : day}</div>
216
- )}
199
+ {inline ? (
200
+ <>
201
+ <HiddenInputFieldContainer
202
+ height={hiddenInputFieldContainerHeight}
203
+ width={hiddenInputFieldContainerWidth}
204
+ >
205
+ <input
206
+ ref={ref}
207
+ id={id}
208
+ type="text"
209
+ value={value?.format('DD/MM/YYYY') ?? ''}
210
+ readOnly
217
211
  />
218
- </>
219
- ) : (
220
- <SingleDatePicker
212
+ </HiddenInputFieldContainer>
213
+ <DayPickerSingleDateController
221
214
  date={value}
222
215
  onDateChange={onChange}
223
216
  focused={isFocused}
224
217
  onFocusChange={onFocusChange}
225
218
  numberOfMonths={1}
226
219
  hideKeyboardShortcutsPanel={true}
227
- keepOpenOnDateSelect={true}
220
+ keepOpenOnDateSelect={false}
228
221
  daySize={daySize}
229
- ref={ref}
230
222
  renderNavPrevButton={renderPrevButton}
223
+ renderNavNextButton={renderNextButton}
231
224
  isOutsideRange={isDayDisabled}
232
225
  phrases={getCopy()}
233
- id={id}
234
- displayFormat="DD / MM / YYYY"
235
- placeholder="DD / MM / YYYY"
236
- renderNavNextButton={renderNextButton}
237
226
  renderMonthElement={({ month }) => (
238
227
  <MonthCenterContainer>
239
228
  <div>
@@ -248,8 +237,53 @@ const DatePicker = forwardRef(
248
237
  <div>{dictionary[copy] ? dictionary[copy].weekDays[day] : day}</div>
249
238
  )}
250
239
  />
251
- )}
252
- </InputSupports>
240
+ </>
241
+ ) : (
242
+ <DateInputWrapper onMouseDown={handleMouseDown} onFocus={handleFocus}>
243
+ <TextInput
244
+ copy={copy}
245
+ feedback={feedback}
246
+ hint={hint}
247
+ placeholder="DD / MM / YYYY"
248
+ onChange={onChangeInput}
249
+ tooltip={tooltip}
250
+ hintPosition={hintPosition}
251
+ label={dictionary[copy]?.roleDescription ?? label}
252
+ value={inputText}
253
+ validation={validation}
254
+ >
255
+ <SingleDatePicker
256
+ date={value}
257
+ onDateChange={onChange}
258
+ focused={isFocused}
259
+ onFocusChange={onFocusChange}
260
+ numberOfMonths={1}
261
+ hideKeyboardShortcutsPanel={true}
262
+ keepOpenOnDateSelect={true}
263
+ daySize={daySize}
264
+ ref={ref}
265
+ renderNavPrevButton={renderPrevButton}
266
+ isOutsideRange={isDayDisabled}
267
+ phrases={getCopy()}
268
+ id={id}
269
+ renderNavNextButton={renderNextButton}
270
+ renderMonthElement={({ month }) => (
271
+ <MonthCenterContainer>
272
+ <div>
273
+ {dictionary[copy]
274
+ ? dictionary[copy].months[month.month()]
275
+ : month.format('MMMM')}{' '}
276
+ {month.year()}
277
+ </div>
278
+ </MonthCenterContainer>
279
+ )}
280
+ renderWeekHeaderElement={(day) => (
281
+ <div>{dictionary[copy] ? dictionary[copy].weekDays[day] : day}</div>
282
+ )}
283
+ />
284
+ </TextInput>
285
+ </DateInputWrapper>
286
+ )}
253
287
  </CalendarContainer>
254
288
  )
255
289
  }