@licklist/design 0.76.0-stage.3 → 0.76.0-stage.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"IntervalInput.d.ts","sourceRoot":"","sources":["../../../src/events/edit-event-modal/IntervalInput.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAA;AAIxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAG7D,UAAU,kBAAkB;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,iBAAyB,EACzB,YAAoB,EACrB,EAAE,kBAAkB,2CAkKpB"}
1
+ {"version":3,"file":"IntervalInput.d.ts","sourceRoot":"","sources":["../../../src/events/edit-event-modal/IntervalInput.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,6DAA6D,CAAA;AAIxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAG7D,UAAU,kBAAkB;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,iBAAyB,EACzB,YAAoB,EACrB,EAAE,kBAAkB,2CAwKpB"}
@@ -118,7 +118,7 @@ function IntervalInput(param) {
118
118
  ]).t;
119
119
  var _useFormContext = useFormContext(), register = _useFormContext.register, errors = _useFormContext.formState.errors, control = _useFormContext.control, trigger = _useFormContext.trigger, setValue = _useFormContext.setValue;
120
120
  var formattedDuration = useFormattedDuration();
121
- var validationOptions = useValidationOptions();
121
+ var validationOptions = useValidationOptions({});
122
122
  var rrule = useWatch({
123
123
  control: control,
124
124
  name: 'rrule'
@@ -182,6 +182,12 @@ function IntervalInput(param) {
182
182
  setValue('rrule', null);
183
183
  }
184
184
  };
185
+ useEffect(function() {
186
+ if (!start) return;
187
+ trigger('end');
188
+ }, [
189
+ start
190
+ ]);
185
191
  return /*#__PURE__*/ jsxs(Fragment, {
186
192
  children: [
187
193
  /*#__PURE__*/ jsxs(Form.Row, {
@@ -1,10 +1,14 @@
1
- export declare const useValidationOptions: () => {
1
+ interface useValidationOptionsProps {
2
+ maxDurationExceeded?: number;
3
+ }
4
+ export declare const useValidationOptions: ({ maxDurationExceeded }: useValidationOptionsProps) => {
2
5
  start: {
3
6
  required: string;
4
7
  };
5
8
  end: {
6
9
  required: string;
7
- validate: (value: any) => string | true;
10
+ validate: (value: string) => string | true;
8
11
  };
9
12
  };
13
+ export {};
10
14
  //# sourceMappingURL=useValidationOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useValidationOptions.d.ts","sourceRoot":"","sources":["../../../../src/events/edit-event-modal/hooks/useValidationOptions.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB;;kBASrB,MAAM;;;kBAMN,MAAM;;;CAWjB,CAAA"}
1
+ {"version":3,"file":"useValidationOptions.d.ts","sourceRoot":"","sources":["../../../../src/events/edit-event-modal/hooks/useValidationOptions.tsx"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,oBAAoB,4BAAkC,yBAAyB;;kBAUhF,MAAM;;;kBAMN,MAAM;0BACM,MAAM;;CAsB7B,CAAA"}
@@ -2,7 +2,8 @@ import { DateTime } from 'luxon';
2
2
  import { useFormContext, useWatch } from 'react-hook-form';
3
3
  import { useTranslation } from 'react-i18next';
4
4
 
5
- var useValidationOptions = function() {
5
+ var useValidationOptions = function(param) {
6
+ var _param_maxDurationExceeded = param.maxDurationExceeded, maxDurationExceeded = _param_maxDurationExceeded === void 0 ? 24 : _param_maxDurationExceeded;
6
7
  var control = useFormContext().control;
7
8
  var t = useTranslation([
8
9
  'Design',
@@ -22,11 +23,21 @@ var useValidationOptions = function() {
22
23
  required: t('Validation:fieldRequired', {
23
24
  attribute: t('end')
24
25
  }),
25
- // TODO: uncomment when event splitting is implemented
26
- // and extract into plugins
27
26
  validate: function(value) {
28
- return(// endAt not required
29
- value ? DateTime.fromISO(value).diff(DateTime.fromISO(start)).toMillis() > 0 || t('Validation:fieldValidEventEnd') : true);
27
+ if (!value || !start) return true;
28
+ var startDt = DateTime.fromISO(start);
29
+ var endDt = DateTime.fromISO(value);
30
+ var diffMillis = endDt.diff(startDt).toMillis();
31
+ if (diffMillis <= 0) {
32
+ return t('Validation:fieldValidEventEnd');
33
+ }
34
+ var maxDurationExceededHours = maxDurationExceeded * 60 * 60 * 1000;
35
+ if (diffMillis > maxDurationExceededHours) {
36
+ return t('Design:eventMaxDurationExceeded', {
37
+ maxHours: maxDurationExceeded
38
+ });
39
+ }
40
+ return true;
30
41
  }
31
42
  }
32
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/recurring-date-picker-input/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAA;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEjD,eAAO,MAAM,sBAAsB,yBAGhC;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,OAWH,CAAA;AAED,MAAM,MAAM,kBAAkB,GAC1B,SAAS,CAAC,KAAK,GACf,SAAS,CAAC,MAAM,GAChB,SAAS,CAAC,OAAO,GACjB,SAAS,CAAC,MAAM,CAAA;AAEpB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,kBAAkB,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAG/B;IACD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,KAoEM,kBACN,CAAA;AAED,eAAO,MAAM,sBAAsB,cACtB,OAAO,EAAE,cACR,QAAQ,EAAE,GAAG,SAAS,YACxB,MAAM,KACf;IAED,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAmFjC,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/recurring-date-picker-input/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAA;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEjD,eAAO,MAAM,sBAAsB,yBAGhC;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,OAWH,CAAA;AAED,MAAM,MAAM,kBAAkB,GAC1B,SAAS,CAAC,KAAK,GACf,SAAS,CAAC,MAAM,GAChB,SAAS,CAAC,OAAO,GACjB,SAAS,CAAC,MAAM,CAAA;AAEpB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,kBAAkB,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAG/B;IACD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,KAoEM,kBACN,CAAA;AAED,eAAO,MAAM,sBAAsB,cACtB,OAAO,EAAE,cACR,QAAQ,EAAE,GAAG,SAAS,YACxB,MAAM,KACf;IAED,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAsFjC,CAAA"}
@@ -95,7 +95,9 @@ var useWorkHoursValidation = function() {
95
95
  var intervalsByDay = workHours.map(function(workhour, index, self) {
96
96
  var res = [];
97
97
  var startTime = fromIso(workhour.start, timeZone);
98
- var endTime = fromIso(workhour.end, timeZone);
98
+ var endTime = fromIso(workhour.end, timeZone).plus({
99
+ minute: 1
100
+ });
99
101
  if (endTime > startTime) {
100
102
  res.push(Interval.fromDateTimes(startTime, endTime));
101
103
  } else {
@@ -140,7 +142,9 @@ var useWorkHoursValidation = function() {
140
142
  return !interval.contains(time);
141
143
  });
142
144
  var attribute = notFittingIntervals.map(function(interval) {
143
- return interval.toFormat('HH:mm');
145
+ return "".concat(interval.start.toFormat('HH:mm'), " - ").concat(interval.end.minus({
146
+ minutes: 1
147
+ }).toFormat('HH:mm'));
144
148
  }).join(', ');
145
149
  if (notFittingIntervalsByDay.length !== 0) {
146
150
  return t('outsideWorkingHours', {
@@ -37,7 +37,7 @@ var DescriptionControl = function(param) {
37
37
  });
38
38
  },
39
39
  rules: {
40
- required: true
40
+ required: false
41
41
  },
42
42
  control: control,
43
43
  name: "description"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licklist/design",
3
- "version": "0.76.0-stage.3",
3
+ "version": "0.76.0-stage.5",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@bitbucket.org/artelogicsoft/licklist_design.git"
@@ -45,7 +45,7 @@ export function IntervalInput({
45
45
  } = useFormContext<IntervalInputValues>()
46
46
 
47
47
  const formattedDuration = useFormattedDuration()
48
- const validationOptions = useValidationOptions()
48
+ const validationOptions = useValidationOptions({})
49
49
 
50
50
  const rrule = useWatch({ control, name: 'rrule' })
51
51
  const start = useWatch({ control, name: 'start' })
@@ -106,6 +106,12 @@ export function IntervalInput({
106
106
  }
107
107
  }
108
108
 
109
+ useEffect(() => {
110
+ if (!start) return
111
+
112
+ trigger('end')
113
+ },[start])
114
+
109
115
  return (
110
116
  <>
111
117
  <Form.Row className='interval-container'>
@@ -2,9 +2,14 @@ import { DateTime } from 'luxon'
2
2
  import { useFormContext, useWatch } from 'react-hook-form'
3
3
  import { useTranslation } from 'react-i18next'
4
4
 
5
- export const useValidationOptions = () => {
5
+ interface useValidationOptionsProps {
6
+ maxDurationExceeded?: number
7
+ }
8
+
9
+ export const useValidationOptions = ({ maxDurationExceeded = 24 }: useValidationOptionsProps) => {
6
10
  const { control } = useFormContext()
7
11
  const { t } = useTranslation(['Design', 'Validation'])
12
+
8
13
  const start = useWatch({ control, name: 'start' })
9
14
 
10
15
  return {
@@ -18,14 +23,26 @@ export const useValidationOptions = () => {
18
23
  required: t('Validation:fieldRequired', {
19
24
  attribute: t('end'),
20
25
  }) as string,
21
- // TODO: uncomment when event splitting is implemented
22
- // and extract into plugins
23
- validate: (value) =>
24
- // endAt not required
25
- value
26
- ? DateTime.fromISO(value).diff(DateTime.fromISO(start)).toMillis() >
27
- 0 || (t('Validation:fieldValidEventEnd') as string)
28
- : true,
26
+ validate: (value: string) => {
27
+ if (!value || !start) return true
28
+
29
+ const startDt = DateTime.fromISO(start)
30
+ const endDt = DateTime.fromISO(value)
31
+ const diffMillis = endDt.diff(startDt).toMillis()
32
+
33
+ if (diffMillis <= 0) {
34
+ return t('Validation:fieldValidEventEnd') as string
35
+ }
36
+
37
+ const maxDurationExceededHours = maxDurationExceeded * 60 * 60 * 1000
38
+ if (diffMillis > maxDurationExceededHours) {
39
+ return t('Design:eventMaxDurationExceeded', {
40
+ maxHours: maxDurationExceeded,
41
+ }) as string
42
+ }
43
+
44
+ return true
45
+ },
29
46
  },
30
47
  }
31
48
  }
@@ -144,7 +144,7 @@ export const useWorkHoursValidation = (
144
144
  const res: Interval[] = []
145
145
 
146
146
  const startTime = fromIso(workhour.start, timeZone)
147
- const endTime = fromIso(workhour.end, timeZone)
147
+ const endTime = fromIso(workhour.end, timeZone).plus({ minute: 1 })
148
148
 
149
149
  if (endTime > startTime) {
150
150
  res.push(Interval.fromDateTimes(startTime, endTime))
@@ -194,7 +194,10 @@ export const useWorkHoursValidation = (
194
194
  .filter((interval) => !interval.contains(time))
195
195
 
196
196
  const attribute = notFittingIntervals
197
- .map((interval) => interval.toFormat('HH:mm'))
197
+ .map(
198
+ (interval) =>
199
+ `${interval.start.toFormat('HH:mm')} - ${interval.end.minus({ minutes: 1 }).toFormat('HH:mm')}`,
200
+ )
198
201
  .join(', ')
199
202
 
200
203
  if (notFittingIntervalsByDay.length !== 0) {
@@ -35,7 +35,7 @@ export const DescriptionControl = ({ isLoading }: DescriptionControlProps) => {
35
35
  className={clsx(errors.description && 'is-invalid')}
36
36
  />
37
37
  )}
38
- rules={{ required: true }}
38
+ rules={{ required: false }}
39
39
  control={control}
40
40
  name='description'
41
41
  />