diff --git a/components/time-picker/index.en-US.md b/components/time-picker/index.en-US.md new file mode 100644 index 000000000..702decc2e --- /dev/null +++ b/components/time-picker/index.en-US.md @@ -0,0 +1,58 @@ +--- +category: Components +type: Data Entry +title: TimePicker +--- + +To select/input a time. + +## When To Use + +* * * + +By clicking the input box, you can select a time from a popup panel. + +## API + +* * * + +```jsx +import moment from 'moment'; + +``` + +| Property | Description | Type | Default | +| -------- | ----------- | ---- | ------- | +| addon | called from timepicker panel to render some addon to its bottom | function | - | +| allowEmpty | allow clearing text | boolean | true | +| autoFocus | get focus when component mounted | boolean | false | +| className | className of picker | string | '' | +| clearText | clear tooltip of icon | string | clear | +| defaultOpenValue | default open panel value, used to set utcOffset,locale if value/defaultValue absent | [moment](http://momentjs.com/) | moment() | +| defaultValue | to set default time | [moment](http://momentjs.com/) | - | +| disabled | determine whether the TimePicker is disabled | boolean | false | +| disabledHours | to specify the hours that cannot be selected | function() | - | +| disabledMinutes | to specify the minutes that cannot be selected | function(selectedHour) | - | +| disabledSeconds | to specify the seconds that cannot be selected | function(selectedHour, selectedMinute) | - | +| format | to set the time format | string | "HH:mm:ss" | +| getPopupContainer | to set the container of the floating layer, while the default is to create a div element in body | function(trigger) | - | +| hideDisabledOptions | hide the options that can not be selected | boolean | false | +| hourStep | interval between hours in picker | number | 1 | +| minuteStep | interval between minutes in picker | number | 1 | +| open | whether to popup panel | boolean | false | +| placeholder | display when there's no value | string | "Select a time" | +| popupClassName | className of panel | string | '' | +| secondStep | interval between seconds in picker | number | 1 | +| use12Hours | display as 12 hours format, with default format `h:mm:ss a` | boolean | false | +| value | to set time | [moment](http://momentjs.com/) | - | +| onChange | a callback function, can be executed when the selected time is changing | function(time: moment, timeString: string): void | - | +| onOpenChange | a callback function which will be called while panel opening/closing | (open: boolean): void | - | + +## Methods + +| Name | Description | +| ---- | ----------- | +| blur() | remove focus | +| focus() | get focus | + + diff --git a/components/time-picker/index.vue b/components/time-picker/index.vue new file mode 100644 index 000000000..18bb909de --- /dev/null +++ b/components/time-picker/index.vue @@ -0,0 +1,179 @@ + \ No newline at end of file diff --git a/components/time-picker/index.zh-CN.md b/components/time-picker/index.zh-CN.md new file mode 100644 index 000000000..37a3877e3 --- /dev/null +++ b/components/time-picker/index.zh-CN.md @@ -0,0 +1,59 @@ +--- +category: Components +subtitle: 时间选择框 +type: Data Entry +title: TimePicker +--- + +输入或选择时间的控件。 + +## 何时使用 + +* * * + +当用户需要输入一个时间,可以点击标准输入框,弹出时间面板进行选择。 + +## API + +* * * + +```jsx +import moment from 'moment'; + +``` + +| 参数 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| addon | 选择框底部显示自定义的内容 | function | 无 | +| allowEmpty | 是否展示清除按钮 | boolean | true | +| autoFocus | 自动获取焦点 | boolean | false | +| className | 选择器类名 | string | '' | +| clearText | 清除按钮的提示文案 | string | clear | +| defaultOpenValue | 当 defaultValue/value 不存在时,可以设置面板打开时默认选中的值 | [moment](http://momentjs.com/) | moment() | +| defaultValue | 默认时间 | [moment](http://momentjs.com/) | 无 | +| disabled | 禁用全部操作 | boolean | false | +| disabledHours | 禁止选择部分小时选项 | function() | 无 | +| disabledMinutes | 禁止选择部分分钟选项 | function(selectedHour) | 无 | +| disabledSeconds | 禁止选择部分秒选项 | function(selectedHour, selectedMinute) | 无 | +| format | 展示的时间格式 | string | "HH:mm:ss" | +| getPopupContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | 无 | +| hideDisabledOptions | 隐藏禁止选择的选项 | boolean | false | +| hourStep | 小时选项间隔 | number | 1 | +| minuteStep | 分钟选项间隔 | number | 1 | +| open | 面板是否打开 | boolean | false | +| placeholder | 没有值的时候显示的内容 | string | "请选择时间" | +| popupClassName | 弹出层类名 | string | '' | +| secondStep | 秒选项间隔 | number | 1 | +| use12Hours | 使用 12 小时制,为 true 时 `format` 默认为 `h:mm:ss a` | boolean | false | +| value | 当前时间 | [moment](http://momentjs.com/) | 无 | +| onChange | 时间发生变化的回调 | function(time: moment, timeString: string): void | 无 | +| onOpenChange | 面板打开/关闭时的回调 | (open: boolean): void | 无 | + +## 方法 + +| 名称 | 描述 | +| --- | --- | +| blur() | 移除焦点 | +| focus() | 获取焦点 | + + diff --git a/components/time-picker/locale/ar_EG.tsx.js b/components/time-picker/locale/ar_EG.tsx.js new file mode 100644 index 000000000..cf6d7575b --- /dev/null +++ b/components/time-picker/locale/ar_EG.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'اختيار الوقت', +} + +export default locale diff --git a/components/time-picker/locale/bg_BG.tsx.js b/components/time-picker/locale/bg_BG.tsx.js new file mode 100644 index 000000000..e6896fe4a --- /dev/null +++ b/components/time-picker/locale/bg_BG.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Избор на час', +}; + +export default locale; diff --git a/components/time-picker/locale/ca_ES.tsx.js b/components/time-picker/locale/ca_ES.tsx.js new file mode 100644 index 000000000..cfd60a8b9 --- /dev/null +++ b/components/time-picker/locale/ca_ES.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Seleccionar hora', +}; + +export default locale; diff --git a/components/time-picker/locale/cs_CZ.tsx.js b/components/time-picker/locale/cs_CZ.tsx.js new file mode 100644 index 000000000..5c89f7aff --- /dev/null +++ b/components/time-picker/locale/cs_CZ.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Vybrat čas', +}; + +export default locale; diff --git a/components/time-picker/locale/de_DE.tsx.js b/components/time-picker/locale/de_DE.tsx.js new file mode 100644 index 000000000..c912e9e8f --- /dev/null +++ b/components/time-picker/locale/de_DE.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Zeit auswählen', +}; + +export default locale; diff --git a/components/time-picker/locale/el_GR.tsx.js b/components/time-picker/locale/el_GR.tsx.js new file mode 100644 index 000000000..2c0dea51f --- /dev/null +++ b/components/time-picker/locale/el_GR.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Επιλέξτε ώρα', +}; + +export default locale; diff --git a/components/time-picker/locale/en_GB.tsx.js b/components/time-picker/locale/en_GB.tsx.js new file mode 100644 index 000000000..b95b5a362 --- /dev/null +++ b/components/time-picker/locale/en_GB.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Select time', +}; + +export default locale; diff --git a/components/time-picker/locale/en_US.tsx.js b/components/time-picker/locale/en_US.tsx.js new file mode 100644 index 000000000..b95b5a362 --- /dev/null +++ b/components/time-picker/locale/en_US.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Select time', +}; + +export default locale; diff --git a/components/time-picker/locale/es_ES.tsx.js b/components/time-picker/locale/es_ES.tsx.js new file mode 100644 index 000000000..cfd60a8b9 --- /dev/null +++ b/components/time-picker/locale/es_ES.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Seleccionar hora', +}; + +export default locale; diff --git a/components/time-picker/locale/et_EE.tsx.js b/components/time-picker/locale/et_EE.tsx.js new file mode 100644 index 000000000..7ebc008d0 --- /dev/null +++ b/components/time-picker/locale/et_EE.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Vali aeg', +}; + +export default locale; diff --git a/components/time-picker/locale/fa_IR.tsx.js b/components/time-picker/locale/fa_IR.tsx.js new file mode 100644 index 000000000..0dcc5d924 --- /dev/null +++ b/components/time-picker/locale/fa_IR.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'انتخاب زمان', +}; + +export default locale; diff --git a/components/time-picker/locale/fi_FI.tsx.js b/components/time-picker/locale/fi_FI.tsx.js new file mode 100644 index 000000000..6c4d9a122 --- /dev/null +++ b/components/time-picker/locale/fi_FI.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Valitse aika', +}; + +export default locale; diff --git a/components/time-picker/locale/fr_BE.tsx.js b/components/time-picker/locale/fr_BE.tsx.js new file mode 100644 index 000000000..e6fca5d4e --- /dev/null +++ b/components/time-picker/locale/fr_BE.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Sélectionner l\'heure', +}; + +export default locale; diff --git a/components/time-picker/locale/fr_FR.tsx.js b/components/time-picker/locale/fr_FR.tsx.js new file mode 100644 index 000000000..e6fca5d4e --- /dev/null +++ b/components/time-picker/locale/fr_FR.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Sélectionner l\'heure', +}; + +export default locale; diff --git a/components/time-picker/locale/is_IS.tsx.js b/components/time-picker/locale/is_IS.tsx.js new file mode 100644 index 000000000..6a5994a28 --- /dev/null +++ b/components/time-picker/locale/is_IS.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Velja tíma', +}; + +export default locale; diff --git a/components/time-picker/locale/it_IT.tsx.js b/components/time-picker/locale/it_IT.tsx.js new file mode 100644 index 000000000..16dd65d4e --- /dev/null +++ b/components/time-picker/locale/it_IT.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Selezionare il tempo', +}; + +export default locale; diff --git a/components/time-picker/locale/ja_JP.tsx.js b/components/time-picker/locale/ja_JP.tsx.js new file mode 100644 index 000000000..366344d41 --- /dev/null +++ b/components/time-picker/locale/ja_JP.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: '時刻を選択', +}; + +export default locale; diff --git a/components/time-picker/locale/ko_KR.tsx.js b/components/time-picker/locale/ko_KR.tsx.js new file mode 100644 index 000000000..fad0ffd8c --- /dev/null +++ b/components/time-picker/locale/ko_KR.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: '날짜 선택', +}; + +export default locale; diff --git a/components/time-picker/locale/ku_IQ.tsx.js b/components/time-picker/locale/ku_IQ.tsx.js new file mode 100755 index 000000000..838b1958d --- /dev/null +++ b/components/time-picker/locale/ku_IQ.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Demê hilbijêre', +}; + +export default locale; diff --git a/components/time-picker/locale/nb_NO.tsx.js b/components/time-picker/locale/nb_NO.tsx.js new file mode 100644 index 000000000..dfc0d96e9 --- /dev/null +++ b/components/time-picker/locale/nb_NO.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Velg tid', +}; + +export default locale; diff --git a/components/time-picker/locale/nl_BE.tsx.js b/components/time-picker/locale/nl_BE.tsx.js new file mode 100644 index 000000000..7318ca9f6 --- /dev/null +++ b/components/time-picker/locale/nl_BE.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Selecteer tijd', +}; + +export default locale; diff --git a/components/time-picker/locale/nl_NL.tsx.js b/components/time-picker/locale/nl_NL.tsx.js new file mode 100644 index 000000000..7318ca9f6 --- /dev/null +++ b/components/time-picker/locale/nl_NL.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Selecteer tijd', +}; + +export default locale; diff --git a/components/time-picker/locale/pl_PL.tsx.js b/components/time-picker/locale/pl_PL.tsx.js new file mode 100644 index 000000000..bd48f4f68 --- /dev/null +++ b/components/time-picker/locale/pl_PL.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Wybierz godzinę', +}; + +export default locale; diff --git a/components/time-picker/locale/pt_BR.tsx.js b/components/time-picker/locale/pt_BR.tsx.js new file mode 100644 index 000000000..ed0247e10 --- /dev/null +++ b/components/time-picker/locale/pt_BR.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Hora', +}; + +export default locale; diff --git a/components/time-picker/locale/pt_PT.tsx.js b/components/time-picker/locale/pt_PT.tsx.js new file mode 100644 index 000000000..ed0247e10 --- /dev/null +++ b/components/time-picker/locale/pt_PT.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Hora', +}; + +export default locale; diff --git a/components/time-picker/locale/ru_RU.tsx.js b/components/time-picker/locale/ru_RU.tsx.js new file mode 100644 index 000000000..0490573e7 --- /dev/null +++ b/components/time-picker/locale/ru_RU.tsx.js @@ -0,0 +1,8 @@ +/** + * Created by Andrey Gayvoronsky on 13/04/16. + */ +const locale = { + placeholder: 'Выберите время', +}; + +export default locale; diff --git a/components/time-picker/locale/sk_SK.tsx.js b/components/time-picker/locale/sk_SK.tsx.js new file mode 100644 index 000000000..4c62d104b --- /dev/null +++ b/components/time-picker/locale/sk_SK.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Vybrať čas', +}; + +export default locale; diff --git a/components/time-picker/locale/sr_RS.tsx.js b/components/time-picker/locale/sr_RS.tsx.js new file mode 100644 index 000000000..ef621a0d7 --- /dev/null +++ b/components/time-picker/locale/sr_RS.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Izaberite vreme', +}; + +export default locale; diff --git a/components/time-picker/locale/sv_SE.tsx.js b/components/time-picker/locale/sv_SE.tsx.js new file mode 100644 index 000000000..063c46b78 --- /dev/null +++ b/components/time-picker/locale/sv_SE.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Välj tid', +}; + +export default locale; diff --git a/components/time-picker/locale/th_TH.tsx.js b/components/time-picker/locale/th_TH.tsx.js new file mode 100644 index 000000000..335e55e01 --- /dev/null +++ b/components/time-picker/locale/th_TH.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'เลือกเวลา', +}; + +export default locale; diff --git a/components/time-picker/locale/tr_TR.tsx.js b/components/time-picker/locale/tr_TR.tsx.js new file mode 100644 index 000000000..66f860dca --- /dev/null +++ b/components/time-picker/locale/tr_TR.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Zaman Seç', +}; + +export default locale; diff --git a/components/time-picker/locale/uk_UA.tsx.js b/components/time-picker/locale/uk_UA.tsx.js new file mode 100644 index 000000000..20a81cc53 --- /dev/null +++ b/components/time-picker/locale/uk_UA.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Оберіть час', +}; + +export default locale; diff --git a/components/time-picker/locale/vi_VN.tsx.js b/components/time-picker/locale/vi_VN.tsx.js new file mode 100644 index 000000000..05dff1df5 --- /dev/null +++ b/components/time-picker/locale/vi_VN.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: 'Chọn thời gian', +}; + +export default locale; diff --git a/components/time-picker/locale/zh_CN.tsx.js b/components/time-picker/locale/zh_CN.tsx.js new file mode 100644 index 000000000..6898e575d --- /dev/null +++ b/components/time-picker/locale/zh_CN.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: '请选择时间', +}; + +export default locale; diff --git a/components/time-picker/locale/zh_TW.tsx.js b/components/time-picker/locale/zh_TW.tsx.js new file mode 100644 index 000000000..cde48a919 --- /dev/null +++ b/components/time-picker/locale/zh_TW.tsx.js @@ -0,0 +1,5 @@ +const locale = { + placeholder: '請選擇時間', +}; + +export default locale; diff --git a/components/time-picker/style/index.less b/components/time-picker/style/index.less new file mode 100644 index 000000000..0d7f8c591 --- /dev/null +++ b/components/time-picker/style/index.less @@ -0,0 +1,234 @@ +@import "../../style/themes/default"; +@import "../../style/mixins/index"; +@import "../../input/style/mixin"; + +@timepicker-prefix-cls: ~"@{ant-prefix}-time-picker"; +@timepicker-item-height: 32px; + +.@{timepicker-prefix-cls}-panel { + .reset-component; + z-index: @zindex-picker; + position: absolute; + + &-inner { + position: relative; + outline: none; + list-style: none; + font-size: @font-size-base; + text-align: left; + background-color: @component-background; + border-radius: @border-radius-base; + box-shadow: @box-shadow-base; + background-clip: padding-box; + overflow: hidden; + left: -2px; + } + + &-input { + margin: 0; + padding: 0; + border: 0; + width: 100%; + cursor: auto; + outline: 0; + + .placeholder; + + &-wrap { + box-sizing: border-box; + position: relative; + padding: 7px 2px 7px @control-padding-horizontal; + border-bottom: @border-width-base @border-style-base @border-color-split; + } + + &-invalid { + border-color: red; + } + } + + &-clear-btn { + position: absolute; + right: 8px; + cursor: pointer; + overflow: hidden; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + top: 7px; + margin: 0; + } + + &-clear-btn:after { + font-size: @font-size-base - 2px; + color: @disabled-color; + display: inline-block; + line-height: 1; + width: 20px; + transition: color 0.3s ease; + .iconfont-font("\e62e"); + } + + &-clear-btn:hover:after { + color: @text-color-secondary; + } + + &-narrow &-input-wrap { + max-width: @time-picker-panel-column-width * 2; + } + + &-select { + float: left; + font-size: @font-size-base; + border-left: @border-width-base @border-style-base @border-color-split; + box-sizing: border-box; + width: @time-picker-panel-column-width; + overflow: hidden; + position: relative; // Fix chrome weird render bug + max-height: @timepicker-item-height * 6; + + &:hover { + overflow-y: auto; + } + + &:first-child { + border-left: 0; + margin-left: 0; + } + + &:last-child { + border-right: 0; + } + + &:only-child { + width: 100%; + } + + ul { + list-style: none; + box-sizing: border-box; + margin: 0; + padding: 0 0 @timepicker-item-height * 5; + width: 100%; + } + + li { + list-style: none; + box-sizing: content-box; + margin: 0; + padding: 0 0 0 @control-padding-horizontal; + width: 100%; + height: @timepicker-item-height; + line-height: @timepicker-item-height; + text-align: left; + cursor: pointer; + user-select: none; + transition: background 0.3s; + } + + li:hover { + background: @item-hover-bg; + } + + li&-option-selected { + background: @time-picker-selected-bg; + font-weight: bold; + &:hover { + background: @time-picker-selected-bg; + } + } + + li&-option-disabled { + color: @btn-disable-color; + &:hover { + background: transparent; + cursor: not-allowed; + } + } + } + + &-combobox { + .clearfix; + } + + &-addon { + padding: 8px; + border-top: @border-width-base @border-style-base @border-color-split; + } + + &.slide-up-enter.slide-up-enter-active&-placement-topLeft, + &.slide-up-enter.slide-up-enter-active&-placement-topRight, + &.slide-up-appear.slide-up-appear-active&-placement-topLeft, + &.slide-up-appear.slide-up-appear-active&-placement-topRight { + animation-name: antSlideDownIn; + } + + &.slide-up-enter.slide-up-enter-active&-placement-bottomLeft, + &.slide-up-enter.slide-up-enter-active&-placement-bottomRight, + &.slide-up-appear.slide-up-appear-active&-placement-bottomLeft, + &.slide-up-appear.slide-up-appear-active&-placement-bottomRight { + animation-name: antSlideUpIn; + } + + &.slide-up-leave.slide-up-leave-active&-placement-topLeft, + &.slide-up-leave.slide-up-leave-active&-placement-topRight { + animation-name: antSlideDownOut; + } + + &.slide-up-leave.slide-up-leave-active&-placement-bottomLeft, + &.slide-up-leave.slide-up-leave-active&-placement-bottomRight { + animation-name: antSlideUpOut; + } +} + +.@{timepicker-prefix-cls} { + .reset-component; + position: relative; + display: inline-block; + outline: none; + transition: opacity .3s; + width: 128px; + + &-input { + .input; + &[disabled] { + .disabled; + } + } + + &-open { + opacity: 0; + } + + &-icon { + position: absolute; + user-select: none; + transition: all .3s @ease-in-out; + width: 14px; + height: 14px; + line-height: 14px; + right: @control-padding-horizontal - 1px; + color: @disabled-color; + top: 50%; + margin-top: -7px; + &:after { + content: "\e641"; + font-family: "anticon"; + color: @disabled-color; + display: block; + line-height: 1; + } + } + + &-large &-input { + .input-lg; + } + + &-small &-input { + .input-sm; + } + + &-small &-icon { + right: @control-padding-horizontal-sm - 1px; + } +} diff --git a/components/time-picker/style/index.tsx b/components/time-picker/style/index.tsx new file mode 100644 index 000000000..0e54062b3 --- /dev/null +++ b/components/time-picker/style/index.tsx @@ -0,0 +1,5 @@ +import '../../style/index.less'; +import './index.less'; + +// style dependencies +import '../../input/style'; diff --git a/components/vc-time-picker/Combobox.vue b/components/vc-time-picker/Combobox.vue new file mode 100644 index 000000000..9fade4812 --- /dev/null +++ b/components/vc-time-picker/Combobox.vue @@ -0,0 +1,190 @@ + \ No newline at end of file diff --git a/components/vc-time-picker/Header.vue b/components/vc-time-picker/Header.vue new file mode 100644 index 000000000..30c31c069 --- /dev/null +++ b/components/vc-time-picker/Header.vue @@ -0,0 +1,202 @@ + \ No newline at end of file diff --git a/components/vc-time-picker/Panel.vue b/components/vc-time-picker/Panel.vue new file mode 100644 index 000000000..2981bdd06 --- /dev/null +++ b/components/vc-time-picker/Panel.vue @@ -0,0 +1,188 @@ + diff --git a/components/vc-time-picker/Select.vue b/components/vc-time-picker/Select.vue new file mode 100644 index 000000000..c5d34474e --- /dev/null +++ b/components/vc-time-picker/Select.vue @@ -0,0 +1,131 @@ + diff --git a/components/vc-time-picker/TimePicker.vue b/components/vc-time-picker/TimePicker.vue new file mode 100644 index 000000000..4cfb6f5e9 --- /dev/null +++ b/components/vc-time-picker/TimePicker.vue @@ -0,0 +1,300 @@ + \ No newline at end of file diff --git a/components/vc-time-picker/assets/index.less b/components/vc-time-picker/assets/index.less new file mode 100644 index 000000000..f4caf0010 --- /dev/null +++ b/components/vc-time-picker/assets/index.less @@ -0,0 +1,14 @@ +@prefixClass: rc-time-picker; + +.@{prefixClass} { + display: inline-block; + box-sizing: border-box; + * { + box-sizing: border-box; + } +} + +@import "./index/Picker"; +@import "./index/Panel"; +@import "./index/Header"; +@import "./index/Select"; diff --git a/components/vc-time-picker/assets/index/Header.less b/components/vc-time-picker/assets/index/Header.less new file mode 100644 index 000000000..7ad3d9fd6 --- /dev/null +++ b/components/vc-time-picker/assets/index/Header.less @@ -0,0 +1,49 @@ +.@{prefixClass}-panel { + &-input { + margin: 0; + padding: 0; + width: 100%; + cursor: auto; + line-height: 1.5; + outline: 0; + border: 1px solid transparent; + + &-wrap { + box-sizing: border-box; + position: relative; + padding: 6px; + border-bottom: 1px solid #e9e9e9; + } + + &-invalid { + border-color: red; + } + } + + &-clear-btn { + position: absolute; + right: 6px; + cursor: pointer; + overflow: hidden; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + top: 6px; + margin: 0; + } + + &-clear-btn:after { + content: "x"; + font-size: 12px; + color: #aaa; + display: inline-block; + line-height: 1; + width: 20px; + transition: color 0.3s ease; + } + + &-clear-btn:hover:after { + color: #666; + } +} diff --git a/components/vc-time-picker/assets/index/Panel.less b/components/vc-time-picker/assets/index/Panel.less new file mode 100644 index 000000000..68e6c8e79 --- /dev/null +++ b/components/vc-time-picker/assets/index/Panel.less @@ -0,0 +1,29 @@ +.@{prefixClass}-panel { + z-index: 1070; + width: 170px; + position: absolute; + box-sizing: border-box; + + * { + box-sizing: border-box; + } + + &-inner { + display: inline-block; + position: relative; + outline: none; + list-style: none; + font-size: 12px; + text-align: left; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 1px 5px #ccc; + background-clip: padding-box; + border: 1px solid #ccc; + line-height: 1.5; + } + + &-narrow { + max-width: 113px; + } +} diff --git a/components/vc-time-picker/assets/index/Picker.less b/components/vc-time-picker/assets/index/Picker.less new file mode 100644 index 000000000..610c2b0a4 --- /dev/null +++ b/components/vc-time-picker/assets/index/Picker.less @@ -0,0 +1,23 @@ +.@{prefixClass} { + &-input { + width: 100%; + position: relative; + display: inline-block; + padding: 4px 7px; + height: 28px; + cursor: text; + font-size: 12px; + line-height: 1.5; + color: #666; + background-color: #fff; + background-image: none; + border: 1px solid #d9d9d9; + border-radius: 4px; + transition: border .2s cubic-bezier(0.645, 0.045, 0.355, 1), background .2s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow .2s cubic-bezier(0.645, 0.045, 0.355, 1); + &[disabled] { + color: #ccc; + background: #f7f7f7; + cursor: not-allowed; + } + } +} diff --git a/components/vc-time-picker/assets/index/Select.less b/components/vc-time-picker/assets/index/Select.less new file mode 100644 index 000000000..86c73c109 --- /dev/null +++ b/components/vc-time-picker/assets/index/Select.less @@ -0,0 +1,63 @@ +.@{prefixClass}-panel-select { + float: left; + font-size: 12px; + border: 1px solid #e9e9e9; + border-width: 0 1px; + margin-left: -1px; + box-sizing: border-box; + width: 56px; + max-height: 144px; + overflow-y: auto; + position: relative; // Fix chrome weird render bug + + &-active { + overflow-y: auto; + } + + &:first-child { + border-left: 0; + margin-left: 0; + } + + &:last-child { + border-right: 0; + } + + ul { + list-style: none; + box-sizing: border-box; + margin: 0; + padding: 0; + width: 100%; + } + + li { + list-style: none; + box-sizing: content-box; + margin: 0; + padding: 0 0 0 16px; + width: 100%; + height: 24px; + line-height: 24px; + text-align: left; + cursor: pointer; + user-select: none; + + &:hover { + background: #edfaff; + } + } + + li&-option-selected { + background: #f7f7f7; + font-weight: bold; + } + + li&-option-disabled { + color: #ccc; + &:hover { + background: transparent; + cursor: not-allowed; + } + } +} diff --git a/components/vc-time-picker/index.js b/components/vc-time-picker/index.js new file mode 100644 index 000000000..d9cf5f8c0 --- /dev/null +++ b/components/vc-time-picker/index.js @@ -0,0 +1 @@ +export { default } from './TimePicker' diff --git a/components/vc-time-picker/placements.js b/components/vc-time-picker/placements.js new file mode 100644 index 000000000..e4bacb622 --- /dev/null +++ b/components/vc-time-picker/placements.js @@ -0,0 +1,35 @@ +const autoAdjustOverflow = { + adjustX: 1, + adjustY: 1, +} + +const targetOffset = [0, 0] + +const placements = { + bottomLeft: { + points: ['tl', 'tl'], + overflow: autoAdjustOverflow, + offset: [0, -3], + targetOffset, + }, + bottomRight: { + points: ['tr', 'tr'], + overflow: autoAdjustOverflow, + offset: [0, -3], + targetOffset, + }, + topRight: { + points: ['br', 'br'], + overflow: autoAdjustOverflow, + offset: [0, 3], + targetOffset, + }, + topLeft: { + points: ['bl', 'bl'], + overflow: autoAdjustOverflow, + offset: [0, 3], + targetOffset, + }, +} + +export default placements diff --git a/contributors.md b/contributors.md index cead70e6b..65517f923 100644 --- a/contributors.md +++ b/contributors.md @@ -23,7 +23,7 @@ Affix | done Cascader | done BackTop | done Modal | done -Alert +Alert | done Calendar DatePicker TimePicker diff --git a/package-lock.json b/package-lock.json index ffc3db6a2..27fa07fb8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8032,9 +8032,9 @@ } }, "moment": { - "version": "2.20.1", - "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.20.1.tgz", - "integrity": "sha1-1usaRsvMFKKy+UNBEsH/iQfzE/0=" + "version": "2.21.0", + "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.21.0.tgz", + "integrity": "sha1-KhFLUdKm7J5tg8+AP4OKh42KAjo=" }, "ms": { "version": "2.0.0", diff --git a/package.json b/package.json index 979d69bd8..965b0f87a 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "lodash.debounce": "^4.0.8", "lodash.isequal": "^4.5.0", "lodash.isplainobject": "^4.0.6", - "moment": "^2.20.1", + "moment": "^2.21.0", "omit.js": "^1.0.0", "shallow-equal": "^1.0.0", "shallowequal": "^1.0.2",