Date

Поле для ввода даты, поддерживает маску для установки формата, в основе текстовое поле. A field for entering a date, supports a mask for setting the format, based on the text field.

Import Permalink to "Import"

js
import ProximaDate from 'proxima-vue/field/date';

Playground Permalink to "Playground"

Props
Label position
View
Round
Shadow
Actions visibility
js
import { ref } from 'vue';
import ProximaDate from 'proxima-vue/field/date';

const value = ref('');
html
<ProximaDate
  label="Birthday"
  v-model="value"
/>

Format Permalink to "Format"

По умолчанию формат зависит от выбранной локализации, но вы можете напрямую указать нужный формат, например ISO 8601: By default, the format depends on the selected localization, but you can directly specify the desired format, for example ISO 8601:

html
<ProximaDate
  format="yyyy-mm-dd"
  validity-status="both"
  width="12"
/>

Min and max Permalink to "Min and max"

Вы можете указать минимальную и максимальную дату, если значение будет выходить за эти рамки, то поле будет считаться невалидным, вы можете передать строку с датой или now: You can specify the minimum and maximum date values. If the value falls beyond these limits, the field will be considered invalid. You can pass a string with date or now:

html
<ProximaDate
  format="yyyy-mm-dd"
  validity-status="both"
  width="12"
  min="2022-01-01"
  max="now"
/>

Parser Permalink to "Parser"

Поле умеет парсить текстовые даты на разных языках, вы можете скопировать и вставить текст с датой или нажать на кнопку: The field can parse text dates in different languages. You can copy and paste the text with date or click on the button:

html
<ProximaDate
  format="yyyy-mm-dd"
  validity-status="both"
  width="12"
  has-clear-button
  actions-visibility="always"
  v-model="value"
/>

<button
  type="button"
  v-text="'10 December 1815'"
  @click="value = '10 December 1815'"
/>
js
import { ref } from 'vue';
import ProximaDate from 'proxima-vue/field/date';

const value = ref('');

Mask char Permalink to "Mask char"

Вы можете указать свой символ для маски: You can specify your own placeholder symbol for the mask:

html
<ProximaDate
  width="12"
  mask-char="*"
  format="yyyy-mm-dd"
  validity-status="both"
/>

<ProximaDate
  width="12"
  mask-char="_"
  format="mm/dd/yyyy"
  validity-status="both"
/>

Blink Permalink to "Blink"

По умолчанию при вводе недопустимого символа фон поля мерцает красным цветом, вы можете задать другой цвет или отключить анимацию вовсе: By default, when you enter an invalid character, the field's background blink red. You can set a different color or disable the animation altogether:

css
:root {
  --field-blink-rgb: 255, 0, 0;
  --field-blink-rgb-opacity: 0.15;
}
html
<ProximaDate
  :has-invalid-blink="false"
/>

Unexpected Permalink to "Unexpected"

Поле имеет отдельное событие при вводе недопустимого символа: The field triggers a custom event when an invalid character is entered:

html
<ProximaDate
  :has-invalid-blink="false"
  @unexpected:input="onUnexpectedInput"
/>
js
const onUnexpectedInput = (event) => {
  alert(`Unexpected char: ${event.inputData}`);
};

CSS Permalink to "CSS"

css
--field-mask-color: var(--field-placeholder-color);
--field-invalid-mask-color: color-mix(
  in srgb, var(--field-invalid-color), #fff 50%
);
Locale Permalink to "Locale"

Компонент использует токены локализации: The component uses localization tokens:


js
{
  fieldUnexpectedUseNumber: "Invalid character, use numbers",
  fieldBadDate: "Date does not match format: {format}",
  fieldIsoDate: "year month day",
  fieldBadMonth: "The month is entered incorrectly, it should be from 01 to 12, now: {month}",
  fieldBadDay: "The day is entered incorrectly, it should be from 01 to {max}, now: {day}",
  fieldDateUnderflow: "The earliest date to accept: {date}",
  fieldDateOverflow: "The latest date to accept: {date}",
}
Expose Permalink to "Expose"

Поле поддерживает все методы текстового поля и функцию возврата даты в формате ISO: The field supports all text field methods and is able to return an ISO date:

html
<ProximaDate
  ref="field"
  format="mm/dd/yyyy"
  v-model="value"
/>
ts
import { ref, unref, onMounted } from 'vue';
import ProximaDate from 'proxima-vue/field/date';

const field = ref({} as InstanceType<typeof ProximaDate>);
const value = ref('04/15/1992');

onMounted(() => {
  unref(field).getISOString(); // 1992-04-15
});

Extends Permalink to "Extends"

Данный компонент основан на текстовом поле и поддерживает его пропсы, события, слоты, БЭМ модификаторы и кастомные свойства. This component is based on a text field and supports its props, events, slots, BEM modifiers and custom properties.

View source on GitHub