diff --git a/common/changes/office-ui-fabric-react/datepicker-mergestyles-step-2_2018-06-27-22-54.json b/common/changes/office-ui-fabric-react/datepicker-mergestyles-step-2_2018-06-27-22-54.json new file mode 100644 index 0000000000000..1484e0b43520c --- /dev/null +++ b/common/changes/office-ui-fabric-react/datepicker-mergestyles-step-2_2018-06-27-22-54.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "office-ui-fabric-react", + "comment": "DatePicker MergeStyles step 2 - Converts scss to js styles", + "type": "minor" + } + ], + "packageName": "office-ui-fabric-react", + "email": "v-jescla@microsoft.com" +} \ No newline at end of file diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.base.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.base.tsx index 3d3968fd650b1..167958ca1d849 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.base.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.base.tsx @@ -1,15 +1,21 @@ import * as React from 'react'; -import { IDatePicker, IDatePickerProps, IDatePickerStrings } from './DatePicker.types'; +import { + IDatePicker, + IDatePickerProps, + IDatePickerStrings, + IDatePickerStyleProps, + IDatePickerStyles +} from './DatePicker.types'; +import { BaseComponent, KeyCodes, createRef, classNamesFunction } from '../../Utilities'; import { Calendar, ICalendar, DayOfWeek } from '../../Calendar'; import { FirstWeekOfYear } from '../../utilities/dateValues/DateValues'; import { Callout } from '../../Callout'; import { DirectionalHint } from '../../common/DirectionalHint'; import { TextField, ITextField } from '../../TextField'; -import { BaseComponent, KeyCodes, css, createRef } from '../../Utilities'; import { compareDates, compareDatePart } from '../../utilities/dateMath/DateMath'; -import * as stylesImport from './DatePicker.scss'; import { FocusTrapZone } from '../../FocusTrapZone'; -const styles: any = stylesImport; + +const getClassNames = classNamesFunction(); export interface IDatePickerState { selectedDate?: Date; @@ -145,6 +151,9 @@ export class DatePickerBase extends BaseComponent +
{ - const { className } = props; +const GlobalClassNames = { + root: 'ms-DatePicker', + callout: 'ms-DatePicker-callout', + withLabel: 'ms-DatePicker-event--with-label', + withoutLabel: 'ms-DatePicker-event--without-label', + disabled: 'msDatePickerDisabled ' +}; + +export const styles = (props: IDatePickerStyleProps): IDatePickerStyles => { + const { className, theme, disabled, label, isDatePickerShown } = props; + const { palette } = theme; + const classNames = getGlobalClassNames(GlobalClassNames, theme); + + const DatePickerEvent: IStyle = { + color: palette.neutralSecondary, + fontSize: FontSizes.icon, + lineHeight: '18px', + pointerEvents: 'none', + position: 'absolute', + right: '9px' + }; return { - root: [ - 'ms-DatePicker', + root: [classNames.root, isDatePickerShown && 'is-open', normalize, className], + textField: [ { - // Insert css properties - }, - className + position: 'relative', + selectors: { + '& input[readonly]': { + cursor: 'pointer' + }, + input: { + selectors: { + '::-ms-clear': { + display: 'none' + } + } + } + } + } + ], + callout: [classNames.callout], + icon: [ + DatePickerEvent, + !label && [classNames.withoutLabel, { top: '7px' }], + label && [classNames.withLabel, { bottom: '5px' }], + !disabled && [ + classNames.disabled, + { + pointerEvents: 'initial', + cursor: 'pointer' + } + ] ] - - // Insert className styles }; }; diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx index e1793826656fc..fbff8d58cd2c2 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.test.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import * as renderer from 'react-test-renderer'; import { Calendar, ICalendarStrings } from '../Calendar'; +import { DatePicker } from './DatePicker'; import { DatePickerBase } from './DatePicker.base'; import { IDatePickerStrings } from './DatePicker.types'; import { FirstWeekOfYear } from '../../utilities/dateValues/DateValues'; @@ -9,7 +10,7 @@ import { shallow, mount, ReactWrapper } from 'enzyme'; describe('DatePicker', () => { it('renders default DatePicker correctly', () => { // This will only render the input. Calendar component has its own snapshot. - const component = renderer.create(); + const component = renderer.create(); const tree = component.toJSON(); expect(tree).toMatchSnapshot(); }); diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx index 22a4615b8ac1f..50478aa7e00d1 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.tsx @@ -1,14 +1,14 @@ import { styled } from '../../Utilities'; import { IDatePickerProps, IDatePickerStyleProps, IDatePickerStyles } from './DatePicker.types'; import { DatePickerBase } from './DatePicker.base'; -import { getStyles } from './DatePicker.styles'; +import { styles } from './DatePicker.styles'; /** * DatePicker description */ export const DatePicker = styled( DatePickerBase, - getStyles, + styles, undefined, { scope: 'DatePicker' } ); diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.types.ts b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.types.ts index c00690940f0bd..6cdc3bf488032 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.types.ts +++ b/packages/office-ui-fabric-react/src/components/DatePicker/DatePicker.types.ts @@ -275,6 +275,9 @@ export interface IDatePickerStyleProps { className?: string; // Insert DatePicker style props below + disabled?: boolean; + label?: boolean; + isDatePickerShown?: boolean; } export interface IDatePickerStyles { @@ -282,6 +285,7 @@ export interface IDatePickerStyles { * Style for the root element. */ root: IStyle; - - // Insert DatePicker classNames below + textField: IStyle; + callout: IStyle; + icon: IStyle; } diff --git a/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap b/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap index a883cf7ee0b1d..a1a274c73e9b3 100644 --- a/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +++ b/packages/office-ui-fabric-react/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap @@ -2,7 +2,20 @@ exports[`DatePicker renders default DatePicker correctly 1`] = `